{"timestamp":1588425096272,"tag":"runtime.welcome","level":1,"message":"js-debug-nightly v2020.4.2917 started","metadata":{"os":"darwin x64","nodeVersion":"v12.8.1","adapterVersion":"2020.4.2917"}} {"tag":"dap.receive","timestamp":1588425096254,"metadata":{"connectionId":0,"message":{"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code - Insiders","adapterID":"pwa-chrome","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true},"type":"request","seq":1}},"level":0} {"tag":"dap.send","timestamp":1588425096254,"metadata":{"connectionId":0,"message":{"seq":1,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsConfigurationDoneRequest":true,"supportsFunctionBreakpoints":false,"supportsConditionalBreakpoints":true,"supportsHitConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"exceptionBreakpointFilters":[{"filter":"caught","label":"Caught Exceptions","default":false},{"filter":"uncaught","label":"Uncaught Exceptions","default":false}],"supportsStepBack":false,"supportsSetVariable":true,"supportsRestartFrame":true,"supportsGotoTargetsRequest":false,"supportsStepInTargetsRequest":false,"supportsCompletionsRequest":true,"supportsModulesRequest":false,"additionalModuleColumns":[],"supportedChecksumAlgorithms":[],"supportsRestartRequest":true,"supportsExceptionOptions":false,"supportsValueFormattingOptions":true,"supportsExceptionInfoRequest":true,"supportTerminateDebuggee":false,"supportsDelayedStackTraceLoading":true,"supportsLoadedSourcesRequest":true,"supportsLogPoints":true,"supportsTerminateThreadsRequest":false,"supportsSetExpression":false,"supportsTerminateRequest":false,"completionTriggerCharacters":[".","[","\"","'"],"supportsBreakpointLocationsRequest":true,"supportsClipboardContext":true}}},"level":0} {"tag":"dap.send","timestamp":1588425096255,"metadata":{"connectionId":0,"message":{"seq":2,"type":"event","event":"initialized","body":{}}},"level":0} {"tag":"dap.receive","timestamp":1588425096258,"metadata":{"connectionId":0,"message":{"command":"launch","arguments":{"type":"pwa-chrome","name":"Launch VS Code with notebooks","request":"launch","trace":{"console":false,"level":"verbose","stdio":true,"logFile":"/Users/roblou/Library/Application Support/Code - Insiders/logs/20200501T085217/exthost4/ms-vscode.js-debug-nightly/vscode-debugadapter-7.json","tags":[]},"address":"localhost","outputCapture":"console","port":9222,"timeout":20000,"showAsyncStacks":true,"skipFiles":[],"smartStep":true,"sourceMaps":true,"pauseForSourceMap":false,"resolveSourceMapLocations":null,"outFiles":["/Users/roblou/code/vscode/out/**/*.js"],"sourceMapPathOverrides":{"webpack://?:*/*":"${webRoot}/*","webpack:///./~/*":"${webRoot}/node_modules/*","meteor://💻app/*":"${webRoot}/*"},"__workspaceFolder":"","disableNetworkCache":true,"pathMapping":{},"url":null,"urlFilter":"*workbench.html*","webRoot":"/Users/roblou/code/vscode","server":null,"cwd":null,"file":null,"env":{"VSCODE_EXTHOST_WILL_SEND_SOCKET":null},"includeDefaultArgs":true,"runtimeArgs":["--inspect=5875","--no-cached-data","--extensions-dir","../notebook-extension-samples"],"runtimeExecutable":"/Users/roblou/code/vscode/scripts/code.sh","userDataDir":false,"browserLaunchLocation":"workspace","breakOnLoad":false,"__workspaceCachePath":"/Users/roblou/Library/Application Support/Code - Insiders/User/workspaceStorage/33a431c53aff13bf8df0f673e6368384/ms-vscode.js-debug-nightly","__sessionId":"7ae9cd88-b47e-4f10-a47c-264dde8486b1"},"type":"request","seq":2}},"level":0} {"tag":"dap.send","timestamp":1588425096259,"metadata":{"connectionId":0,"message":{"seq":3,"type":"event","event":"output","body":{"category":"console","output":"Note: Using the \"preview\" debug extension\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425096259,"metadata":{"connectionId":0,"message":{"seq":4,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/launch","data":{"type":"pwa-chrome","request":"launch","os":"darwin x64","nodeVersion":"v12.8.1","adapterVersion":"0.9.0","parameters":"{\"type\":\"pwa-chrome\",\"name\":\"\",\"request\":\"launch\",\"trace\":{\"console\":false,\"level\":\"\",\"stdio\":true,\"logFile\":\"\",\"tags\":[]},\"address\":\"localhost\",\"outputCapture\":\"console\",\"port\":9222,\"timeout\":20000,\"showAsyncStacks\":true,\"skipFiles\":[],\"smartStep\":true,\"sourceMaps\":true,\"pauseForSourceMap\":false,\"resolveSourceMapLocations\":null,\"outFiles\":[\"\"],\"sourceMapPathOverrides\":{\"webpack://?:*/*\":\"\",\"webpack:///./~/*\":\"\",\"meteor://💻app/*\":\"\"},\"__workspaceFolder\":\"\",\"disableNetworkCache\":true,\"pathMapping\":{},\"url\":null,\"urlFilter\":\"\",\"webRoot\":\"\",\"server\":null,\"cwd\":null,\"file\":null,\"env\":{\"VSCODE_EXTHOST_WILL_SEND_SOCKET\":null},\"includeDefaultArgs\":true,\"runtimeArgs\":[\"\",\"\",\"\",\"\"],\"runtimeExecutable\":\"\",\"userDataDir\":false,\"browserLaunchLocation\":\"workspace\",\"breakOnLoad\":false,\"__workspaceCachePath\":\"\",\"__sessionId\":\"\"}"}}}},"level":0} {"tag":"dap.send","timestamp":1588425096266,"metadata":{"connectionId":0,"message":{"seq":5,"type":"event","event":"output","body":{"category":"console","output":"Verbose logs are written to:\n/Users/roblou/Library/Application Support/Code - Insiders/logs/20200501T085217/exthost4/ms-vscode.js-debug-nightly/vscode-debugadapter-7.json\n"}}},"level":0} {"tag":"dap.receive","timestamp":1588425096283,"metadata":{"connectionId":0,"message":{"command":"setExceptionBreakpoints","arguments":{"filters":[]},"type":"request","seq":3}},"level":0} {"tag":"dap.send","timestamp":1588425096283,"metadata":{"connectionId":0,"message":{"seq":6,"type":"response","request_seq":3,"command":"setExceptionBreakpoints","success":true,"body":{}}},"level":0} {"tag":"dap.receive","timestamp":1588425096288,"metadata":{"connectionId":0,"message":{"command":"configurationDone","type":"request","seq":4}},"level":0} {"tag":"dap.send","timestamp":1588425096289,"metadata":{"connectionId":0,"message":{"seq":7,"type":"response","request_seq":4,"command":"configurationDone","success":true,"body":{}}},"level":0} {"tag":"dap.receive","timestamp":1588425096291,"metadata":{"connectionId":0,"message":{"command":"threads","type":"request","seq":5}},"level":0} {"tag":"dap.send","timestamp":1588425096291,"metadata":{"connectionId":0,"message":{"seq":8,"type":"response","request_seq":5,"command":"threads","success":true,"body":{"threads":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425099430,"metadata":{"connectionId":0,"message":{"seq":9,"type":"event","event":"output","body":{"category":"stderr","output":"Debugger listening on ws://127.0.0.1:5875/ef4204b5-e631-4067-aac9-b536040f258e\nFor help, see: https://nodejs.org/en/docs/inspector\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425099520,"metadata":{"connectionId":0,"message":{"seq":10,"type":"event","event":"output","body":{"category":"stderr","output":"\nDevTools listening on ws://127.0.0.1:9222/devtools/browser/b0549e56-9580-42c3-b6bd-a7aaabfa9b0f\n"}}},"level":0} {"tag":"cdp.send","timestamp":1588425099622,"metadata":{"connectionId":0,"message":{"id":1,"method":"Target.attachToBrowserTarget","params":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588425099627,"metadata":{"connectionId":0,"message":{"method":"Target.attachedToTarget","params":{"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F","targetInfo":{"targetId":"9694dc82-8d89-40a3-898c-d483576372ae","type":"browser","title":"","url":"","attached":true},"waitingForDebugger":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425099627,"metadata":{"connectionId":0,"message":{"id":1,"result":{"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}}},"level":0} {"tag":"cdp.send","timestamp":1588425099631,"metadata":{"connectionId":0,"message":{"id":2,"method":"Target.setDiscoverTargets","params":{"discover":true},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425099643,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"6debecec-302b-45c4-b0cf-fb8930b4611e","type":"browser","title":"","url":"","attached":true}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425099643,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"9694dc82-8d89-40a3-898c-d483576372ae","type":"browser","title":"","url":"","attached":true}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425099643,"metadata":{"connectionId":0,"message":{"id":2,"result":{},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425099724,"metadata":{"connectionId":0,"message":{"seq":11,"type":"event","event":"output","body":{"category":"stderr","output":"[7820:0502/081139.723996:WARNING:address_sorter_posix.cc(388)] FromSockAddr failed on netmask\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425099890,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"254836B4DC9A828F1D61559A5ED12885","type":"page","title":"","url":"","attached":false,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.send","timestamp":1588425099890,"metadata":{"connectionId":0,"message":{"id":3,"method":"Target.attachToTarget","params":{"targetId":"254836B4DC9A828F1D61559A5ED12885","flatten":true},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100092,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"254836B4DC9A828F1D61559A5ED12885","type":"page","title":"","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100092,"metadata":{"connectionId":0,"message":{"method":"Target.attachedToTarget","params":{"sessionId":"BEDBFE1EDD112E965831A294645D4711","targetInfo":{"targetId":"254836B4DC9A828F1D61559A5ED12885","type":"page","title":"","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"},"waitingForDebugger":false},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100092,"metadata":{"connectionId":0,"message":{"id":3,"result":{"sessionId":"BEDBFE1EDD112E965831A294645D4711"},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.send","timestamp":1588425100096,"metadata":{"connectionId":0,"message":{"id":4,"method":"Target.setAutoAttach","params":{"autoAttach":true,"waitForDebuggerOnStart":true,"flatten":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100096,"metadata":{"connectionId":0,"message":{"id":5,"method":"Network.setCacheDisabled","params":{"cacheDisabled":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100096,"metadata":{"connectionId":0,"message":{"id":6,"method":"Browser.getVersion","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100096,"metadata":{"connectionId":0,"message":{"id":7,"method":"Page.enable","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100096,"metadata":{"connectionId":0,"message":{"id":8,"method":"Page.getResourceTree","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100097,"metadata":{"connectionId":0,"message":{"id":9,"method":"ServiceWorker.enable","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100097,"metadata":{"connectionId":0,"message":{"id":10,"method":"ServiceWorker.setForceUpdateOnPageLoad","params":{"forceUpdateOnPageLoad":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100097,"metadata":{"connectionId":0,"message":{"id":11,"method":"Network.disable","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.launch","timestamp":1588425100099,"message":"Launched successfully","metadata":{"name":"f"},"level":1} {"tag":"dap.send","timestamp":1588425100099,"metadata":{"connectionId":0,"message":{"seq":12,"type":"response","request_seq":2,"command":"launch","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588425100129,"metadata":{"connectionId":0,"message":{"id":6,"result":{"protocolVersion":"1.3","product":"Chrome/78.0.3904.130","revision":"@2081abf4b80079c4c59f38fd100e2fa0b3048bd0","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36","jsVersion":"7.8.279.23"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100130,"metadata":{"connectionId":0,"message":{"id":9,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100130,"metadata":{"connectionId":0,"message":{"id":10,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.target","timestamp":1588425100130,"message":"Retrieved browser information","metadata":{"protocolVersion":"1.3","product":"Chrome/78.0.3904.130","revision":"@2081abf4b80079c4c59f38fd100e2fa0b3048bd0","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36","jsVersion":"7.8.279.23"},"level":0} {"tag":"dap.send","timestamp":1588425100130,"metadata":{"connectionId":0,"message":{"seq":13,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/browserVersion","data":{"browser":"Chrome/78.0.3904.130","targetCRDPVersion":"1.3","targetRevision":"@2081abf4b80079c4c59f38fd100e2fa0b3048bd0","targetUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36","targetV8":"7.8.279.23","targetVersion":"78.0.3904.130","targetProject":"Chrome","targetProduct":""}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425100134,"metadata":{"connectionId":0,"message":{"method":"ServiceWorker.workerRegistrationUpdated","params":{"registrations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100134,"metadata":{"connectionId":0,"message":{"method":"ServiceWorker.workerVersionUpdated","params":{"versions":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100141,"metadata":{"connectionId":0,"message":{"id":4,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100141,"metadata":{"connectionId":0,"message":{"id":5,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100141,"metadata":{"connectionId":0,"message":{"id":7,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100141,"metadata":{"connectionId":0,"message":{"id":8,"result":{"frameTree":{"frame":{"id":"254836B4DC9A828F1D61559A5ED12885","loaderId":"08816529A4864DCBEF1F7FE1A76A7D49","url":":","securityOrigin":"://","mimeType":"text/html"},"resources":[]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100141,"metadata":{"connectionId":0,"message":{"id":11,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100147,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"254836B4DC9A828F1D61559A5ED12885","type":"page","title":"workbench.html?config=%7B\"_\"%3A%5B%5D%2C\"extensions-dir\"%3A\"..%2Fnotebook-extension-samples\"%2C\"inspect\"%3A\"5875\"%2C\"appRoot\"%3A\"%2FUsers%2Froblou%2Fcode%2Fvscode\"%2C\"machineId\"%3A\"e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba\"%2C\"mainPid\"%3A7810%2C\"execPath\"%3A\"%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode - OSS.app%2FContents%2FMacOS%2FElectron\"%2C\"userEnv\"%3A%7B\"VSCODE_IPC_HOOK\"%3A\"%2FUsers%2Froblou%2FLibrary%2FApplication Support%2Fcode-oss-dev%2F1.46.0-main.sock\"%2C\"VSCODE_NLS_CONFIG\"%3A\"%7B%5C\"locale%5C\"%3A%5C\"en%5C\"%2C%5C\"availableLanguages%5C\"%3A%7B%7D%2C%5C\"_languagePackSupport%5C\"%3Atrue%7D\"%2C\"VSCODE_LOGS\"%3A\"%2FUsers%2Froblou%2FLibrary%2FApplication Support%2Fcode-oss-dev%2Flogs%2F20200502T081139\"%7D%2C\"isInitialStartup\"%3Atrue%2C\"folderUri\"%3A%7B\"%24mid\"%3A1%2C\"fsPath\"%3A\"%2FUsers%2Froblou%2Fcode%2Fnotebook-test\"%2C\"external\"%3A\"file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test\"%2C\"path\"%3A\"%2FUsers%2Froblou%2Fcode%2Fnotebook-test\"%2C\"scheme\"%3A\"file\"%7D%2C\"backupPath\"%3A\"%2FUsers%2Froblou%2FLibrary%2FApplication Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2\"%2C\"windowId\"%3A1%2C\"sessionId\"%3A\"window%3A1\"%2C\"logLevel\"%3A2%2C\"zoomLevel\"%3A0%2C\"perfEntries\"%3A%5B\"main%3Astarted\"%2C1588425099492%2C\"main%3AappReady\"%2C1588425099574%2C\"willLoadMainBundle\"%2C1588425099576%2C\"didLoadMainBundle\"%2C1588425099749%2C\"main%3AloadWindow\"%2C1588425099920%5D%2C\"partsSplashPath\"%3A\"%2FUsers%2Froblou%2FLibrary%2FApplication Support%2Fcode-oss-dev%2Frapid_render.json\"%7D","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100204,"metadata":{"connectionId":0,"message":{"method":"Page.frameStartedLoading","params":{"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100204,"metadata":{"connectionId":0,"message":{"method":"Page.frameNavigated","params":{"frame":{"id":"254836B4DC9A828F1D61559A5ED12885","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","securityOrigin":"file://","mimeType":"text/html"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425100238,"metadata":{"connectionId":0,"message":{"command":"loadedSources","type":"request","seq":6}},"level":0} {"tag":"dap.send","timestamp":1588425100238,"metadata":{"connectionId":0,"message":{"seq":14,"type":"response","request_seq":6,"command":"loadedSources","success":true,"body":{"sources":[]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425100241,"metadata":{"connectionId":0,"message":{"method":"Page.domContentEventFired","params":{"timestamp":547782.357415},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100287,"metadata":{"connectionId":0,"message":{"method":"Page.loadEventFired","params":{"timestamp":547782.358018},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100287,"metadata":{"connectionId":0,"message":{"method":"Page.frameStoppedLoading","params":{"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100367,"metadata":{"connectionId":0,"message":{"id":12,"method":"Runtime.enable","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100368,"metadata":{"connectionId":0,"message":{"id":13,"method":"Network.enable","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100368,"metadata":{"connectionId":0,"message":{"id":14,"method":"Debugger.enable","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100368,"metadata":{"connectionId":0,"message":{"id":15,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":32},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100368,"metadata":{"connectionId":0,"message":{"id":16,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425100369,"metadata":{"connectionId":0,"message":{"id":17,"method":"Debugger.setInstrumentationBreakpoint","params":{"instrumentation":"beforeScriptWithSourceMapExecution"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100369,"message":"Dequeue messages","metadata":{"message":[{"method":"ServiceWorker.workerRegistrationUpdated","params":{"registrations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"},{"method":"ServiceWorker.workerVersionUpdated","params":{"versions":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"},{"method":"Page.frameStartedLoading","params":{"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"},{"method":"Page.frameNavigated","params":{"frame":{"id":"254836B4DC9A828F1D61559A5ED12885","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","securityOrigin":"file://","mimeType":"text/html"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"},{"method":"Page.domContentEventFired","params":{"timestamp":547782.357415},"sessionId":"BEDBFE1EDD112E965831A294645D4711"},{"method":"Page.loadEventFired","params":{"timestamp":547782.358018},"sessionId":"BEDBFE1EDD112E965831A294645D4711"},{"method":"Page.frameStoppedLoading","params":{"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}]},"level":0} {"tag":"dap.receive","timestamp":1588425100371,"metadata":{"connectionId":1,"message":{"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code - Insiders","adapterID":"pwa-chrome","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true},"type":"request","seq":1}},"level":0} {"tag":"dap.send","timestamp":1588425100371,"metadata":{"connectionId":1,"message":{"seq":1,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsConfigurationDoneRequest":true,"supportsFunctionBreakpoints":false,"supportsConditionalBreakpoints":true,"supportsHitConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"exceptionBreakpointFilters":[{"filter":"caught","label":"Caught Exceptions","default":false},{"filter":"uncaught","label":"Uncaught Exceptions","default":false}],"supportsStepBack":false,"supportsSetVariable":true,"supportsRestartFrame":true,"supportsGotoTargetsRequest":false,"supportsStepInTargetsRequest":false,"supportsCompletionsRequest":true,"supportsModulesRequest":false,"additionalModuleColumns":[],"supportedChecksumAlgorithms":[],"supportsRestartRequest":true,"supportsExceptionOptions":false,"supportsValueFormattingOptions":true,"supportsExceptionInfoRequest":true,"supportTerminateDebuggee":false,"supportsDelayedStackTraceLoading":true,"supportsLoadedSourcesRequest":true,"supportsLogPoints":true,"supportsTerminateThreadsRequest":false,"supportsSetExpression":false,"supportsTerminateRequest":false,"completionTriggerCharacters":[".","[","\"","'"],"supportsBreakpointLocationsRequest":true,"supportsClipboardContext":true}}},"level":0} {"tag":"dap.send","timestamp":1588425100371,"metadata":{"connectionId":1,"message":{"seq":2,"type":"event","event":"initialized","body":{}}},"level":0} {"tag":"dap.send","timestamp":1588425100371,"metadata":{"connectionId":1,"message":{"seq":3,"type":"event","event":"thread","body":{"reason":"started","threadId":0}}},"level":0} {"tag":"dap.receive","timestamp":1588425100374,"metadata":{"connectionId":1,"message":{"command":"launch","arguments":{"type":"pwa-chrome","name":"workbench.html","request":"launch","__pendingTargetId":"254836B4DC9A828F1D61559A5ED12885","__sessionId":"512ba0df-33d3-44de-8a37-f4716df08ecf"},"type":"request","seq":2}},"level":0} {"tag":"dap.receive","timestamp":1588425100375,"metadata":{"connectionId":1,"message":{"command":"setExceptionBreakpoints","arguments":{"filters":[]},"type":"request","seq":3}},"level":0} {"tag":"cdp.send","timestamp":1588425100375,"metadata":{"connectionId":0,"message":{"id":18,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100406,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"file://","name":"","auxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100407,"metadata":{"connectionId":0,"message":{"id":12,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100407,"metadata":{"connectionId":0,"message":{"id":13,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100437,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"11","url":"internal/per_context/primordials.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":0,"executionContextId":1,"hash":"2740f510529da3241fa954f2b49b6744818bd6ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3086},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"12","url":"internal/per_context/setup.js","startLine":0,"startColumn":0,"endLine":15,"endColumn":0,"executionContextId":1,"hash":"0c1c01b74cb6fb110ddb1853755c7dde682a0890","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":349},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"13","url":"internal/per_context/domexception.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":0,"executionContextId":1,"hash":"2ac2e35c63d28c71673ed513bdcbc6e57543ee4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3575},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"14","url":"internal/bootstrap/loaders.js","startLine":0,"startColumn":0,"endLine":314,"endColumn":0,"executionContextId":1,"hash":"35d044d47158570a3cf6ad01a00709f9092835d0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":9657},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"15","url":"internal/bootstrap/node.js","startLine":0,"startColumn":0,"endLine":471,"endColumn":0,"executionContextId":1,"hash":"1e8653ef3e8cac0248822d795e045dfd44c4a078","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":16135},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"16","url":"internal/errors.js","startLine":0,"startColumn":0,"endLine":1221,"endColumn":0,"executionContextId":1,"hash":"298f9f8a5bebfd09576e4ddb90abe4b15e4d5dbc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":43566},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"17","url":"internal/util.js","startLine":0,"startColumn":0,"endLine":418,"endColumn":0,"executionContextId":1,"hash":"0055092a6ef90c47022b8daf3db97457788af59f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":11936},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"18","url":"events.js","startLine":0,"startColumn":0,"endLine":517,"endColumn":0,"executionContextId":1,"hash":"0315cd4462996c6d750b47ef3ac1e7b02e77790e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":14933},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"19","url":"internal/util/inspect.js","startLine":0,"startColumn":0,"endLine":1663,"endColumn":0,"executionContextId":1,"hash":"21e1c5d37c7bf31334904314782fd86a7d8ebc14","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":54473},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100438,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"20","url":"internal/util/types.js","startLine":0,"startColumn":0,"endLine":78,"endColumn":0,"executionContextId":1,"hash":"0c8652b379af5a80566d20a637c2e9170346c5c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1890},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100439,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"21","url":"internal/assert.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":0,"executionContextId":1,"hash":"38f46daa21c977431ae14e0211ef45bf65d415b1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":473},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100439,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"22","url":"buffer.js","startLine":0,"startColumn":0,"endLine":1107,"endColumn":0,"executionContextId":1,"hash":"23fd03d808bfa35b00d47d0147a472ed161066cc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":32640},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100439,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"23","url":"internal/validators.js","startLine":0,"startColumn":0,"endLine":156,"endColumn":0,"executionContextId":1,"hash":"2102828434681e30037b4e988f0d82906cda797d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":4530},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100439,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"24","url":"internal/buffer.js","startLine":0,"startColumn":0,"endLine":1008,"endColumn":0,"executionContextId":1,"hash":"3610d444342a280f1c15176a4dda7a6e7b82db23","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":28375},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"25","url":"internal/process/per_thread.js","startLine":0,"startColumn":0,"endLine":354,"endColumn":0,"executionContextId":1,"hash":"2c7780861f696eac5a60cabab5a52cbf2207a5e7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":10359},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"26","url":"internal/process/main_thread_only.js","startLine":0,"startColumn":0,"endLine":168,"endColumn":0,"executionContextId":1,"hash":"3ea23d649d573a496bbf2bb4995637652d9fc25b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":4134},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"27","url":"internal/process/stdio.js","startLine":0,"startColumn":0,"endLine":211,"endColumn":0,"executionContextId":1,"hash":"39aef7d3401e8ec95993dde6bfb256b645dbb86b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5636},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"28","url":"internal/async_hooks.js","startLine":0,"startColumn":0,"endLine":472,"endColumn":0,"executionContextId":1,"hash":"013d1dfb41d1ca507930b25c2fb8809b024856e3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":16047},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"29","url":"internal/process/task_queues.js","startLine":0,"startColumn":0,"endLine":181,"endColumn":0,"executionContextId":1,"hash":"3641badc138e889f58d571cf63cda81e3c818ef2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":4568},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"30","url":"internal/process/promises.js","startLine":0,"startColumn":0,"endLine":256,"endColumn":0,"executionContextId":1,"hash":"158f1e2557799ae0168a5f9809621d5063159958","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":8052},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"31","url":"internal/fixed_queue.js","startLine":0,"startColumn":0,"endLine":113,"endColumn":0,"executionContextId":1,"hash":"086f0d47919be4bb691a235db4bd67680ea80695","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":4177},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"32","url":"internal/process/execution.js","startLine":0,"startColumn":0,"endLine":204,"endColumn":0,"executionContextId":1,"hash":"1b29c6002e39f01a4c2d7dec7de91a5825682781","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6421},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"33","url":"path.js","startLine":0,"startColumn":0,"endLine":1377,"endColumn":0,"executionContextId":1,"hash":"09b98752311f5f020876344147c528ea278670a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":41804},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"34","url":"internal/constants.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":0,"executionContextId":1,"hash":"1b0ab12963184ca85a261015c929f7742aec8562","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1452},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"35","url":"internal/process/warning.js","startLine":0,"startColumn":0,"endLine":136,"endColumn":0,"executionContextId":1,"hash":"223eab297a1dac9655226524077b19fc2fa00700","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3903},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"36","url":"internal/timers.js","startLine":0,"startColumn":0,"endLine":599,"endColumn":0,"executionContextId":1,"hash":"1aa32ff78ccfbe410353443333e07b452b310a73","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":17349},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"37","url":"internal/linkedlist.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":0,"executionContextId":1,"hash":"1b79bda92082e2a60e4011cec5ff61970178509b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1112},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"38","url":"internal/priority_queue.js","startLine":0,"startColumn":0,"endLine":123,"endColumn":0,"executionContextId":1,"hash":"114386687a8c478b195c465b1313843a6011bd8b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2879},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"39","url":"internal/util/debuglog.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":0,"executionContextId":1,"hash":"19892a98759bdb96496b9e2f1a7a15f06e4e087a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1921},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"40","url":"internal/bootstrap/environment.js","startLine":0,"startColumn":0,"endLine":13,"endColumn":0,"executionContextId":1,"hash":"07c3dd635e3ba5047bad87cd110c589f7f7bf5c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":374},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"41","url":"internal/bootstrap/pre_execution.js","startLine":0,"startColumn":0,"endLine":444,"endColumn":0,"executionContextId":1,"hash":"22e3695b63c668270b7be25953a14a81357f9154","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":14192},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"42","url":"internal/options.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":0,"executionContextId":1,"hash":"3c98d1915680a9f00a0168ed2c8a076c07c55155","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":312},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"43","url":"internal/inspector_async_hook.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":0,"executionContextId":1,"hash":"2da497f7290ce04b7a263eb006b4cc6b719b0ba9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1931},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"44","url":"internal/modules/cjs/loader.js","startLine":0,"startColumn":0,"endLine":1056,"endColumn":0,"executionContextId":1,"hash":"3aedc91da2630b8854dc2bfd6f46d4f80761aefe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":31961},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"45","url":"internal/url.js","startLine":0,"startColumn":0,"endLine":1428,"endColumn":0,"executionContextId":1,"hash":"04008089a32a6106036807040b42091b7e15df54","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":40375},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"46","url":"internal/querystring.js","startLine":0,"startColumn":0,"endLine":96,"endColumn":0,"executionContextId":1,"hash":"08ce32caa1c618a313a59d8599045de7522f2f17","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2763},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"47","url":"vm.js","startLine":0,"startColumn":0,"endLine":424,"endColumn":0,"executionContextId":1,"hash":"25c2ff0f8ffed3ed329d0e1dab1172c657abf709","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12977},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"48","url":"fs.js","startLine":0,"startColumn":0,"endLine":1892,"endColumn":0,"executionContextId":1,"hash":"121d792547691fd574ae0dd73ecb7628423fc402","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":50659},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"49","url":"internal/fs/utils.js","startLine":0,"startColumn":0,"endLine":473,"endColumn":0,"executionContextId":1,"hash":"0b630c289a1e15e511eb0f51721c2fb926caf7d2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":11837},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100440,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"50","url":"internal/modules/cjs/helpers.js","startLine":0,"startColumn":0,"endLine":195,"endColumn":0,"executionContextId":1,"hash":"33d5fdbc2473ce9404a042821323333c4cc684d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5730},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"51","url":"url.js","startLine":0,"startColumn":0,"endLine":979,"endColumn":0,"executionContextId":1,"hash":"3e02c0ae52dbdf7a5133bc3b1a14919e505463f4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":29857},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"52","url":"internal/idna.js","startLine":0,"startColumn":0,"endLine":9,"endColumn":0,"executionContextId":1,"hash":"2405036c8664650813fb45464eb77033038b3deb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":264},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"53","url":"electron/js2c/asar_init.js","startLine":0,"startColumn":0,"endLine":6,"endColumn":0,"executionContextId":1,"hash":"0318d8cb63726c581b643ab1586844bf27aa483a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":129},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"54","url":"electron/js2c/asar.js","startLine":0,"startColumn":0,"endLine":741,"endColumn":0,"executionContextId":1,"hash":"16446f961301e314279f087ea41386e772b001cc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":24223},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"55","url":"module.js","startLine":0,"startColumn":0,"endLine":3,"endColumn":0,"executionContextId":1,"hash":"0568ac9a89e4a46d812ae53eb17dc0546ce6dc49","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":72},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"56","url":"util.js","startLine":0,"startColumn":0,"endLine":265,"endColumn":0,"executionContextId":1,"hash":"38f4e79115fc9e093a5bef17501f6e9265b87924","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":7912},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"57","url":"internal/encoding.js","startLine":0,"startColumn":0,"endLine":550,"endColumn":0,"executionContextId":1,"hash":"2048d3a69c41398f3bccf7fc4ac309ce098ead1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":15433},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"58","url":"internal/fs/promises.js","startLine":0,"startColumn":0,"endLine":499,"endColumn":0,"executionContextId":1,"hash":"3ba69abe77039c5d3794fa423e025a7872a2bdca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":13790},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"59","url":"internal/main/run_main_module.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":0,"executionContextId":1,"hash":"295e61a74608c1d51c32ca5809320e0705b96e7f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":481},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100441,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"60","url":"electron/js2c/asar_init.js","startLine":0,"startColumn":0,"endLine":6,"endColumn":0,"executionContextId":1,"hash":"0318d8cb63726c581b643ab1586844bf27aa483a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":129},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100451,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"61","url":"electron/js2c/renderer_init.js","startLine":0,"startColumn":0,"endLine":4188,"endColumn":292328,"executionContextId":1,"hash":"11fc095c19e4f37f2c1bc8f622b754026c13c548","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","hasSourceURL":false,"isModule":false,"length":453840},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"62","url":"timers.js","startLine":0,"startColumn":0,"endLine":322,"endColumn":0,"executionContextId":1,"hash":"262b2e2c53f69f21792475394dfc0b1b06b607c1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":8240},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"63","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":1,"hash":"0ae1b0392799aa433c3ff667cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","startLine":0,"startColumn":0,"endLine":154,"endColumn":0,"executionContextId":1,"hash":"14524aa55130690f6df4302eb4c5d5a105c41c48","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6242},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"65","url":"/Users/roblou/code/vscode/out/vs/base/common/performance.js","startLine":0,"startColumn":0,"endLine":109,"endColumn":66,"executionContextId":1,"hash":"25e49d6589e88fce599c4e5c396c946b7f31e8af","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2868},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","startLine":0,"startColumn":0,"endLine":215,"endColumn":66,"executionContextId":1,"hash":"2db6bca328a404ea020ecd2f44d214b965020cab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6790},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"67","url":"/Users/roblou/code/vscode/out/bootstrap.js","startLine":0,"startColumn":0,"endLine":315,"endColumn":66,"executionContextId":1,"hash":"37aa3b036a37651b0f25d0fba65cf20941f109ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":8327},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","startLine":0,"startColumn":0,"endLine":1815,"endColumn":66,"executionContextId":1,"hash":"2c1393f4508e0aff3cc80075bd6082fb07aa0f06","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":85220},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"69","url":"crypto.js","startLine":0,"startColumn":0,"endLine":282,"endColumn":0,"executionContextId":1,"hash":"207f7c1a97729adc1355454762693fb96e23af39","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":7105},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100452,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"70","url":"internal/crypto/random.js","startLine":0,"startColumn":0,"endLine":127,"endColumn":0,"executionContextId":1,"hash":"1ddf66fc0c826f5e2e4c67d5315f399f3e337011","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3451},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"71","url":"internal/crypto/pbkdf2.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":0,"executionContextId":1,"hash":"287d332a69efd15b11cf70a825b2510c14a679ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2742},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"72","url":"internal/crypto/util.js","startLine":0,"startColumn":0,"endLine":110,"endColumn":0,"executionContextId":1,"hash":"22e44f692a4716ad5b3533222b5ba664283c42a8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2726},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"73","url":"internal/crypto/scrypt.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":0,"executionContextId":1,"hash":"03f8e2837e772a9a691e95f7469d99890c1ad79c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3710},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"74","url":"internal/crypto/keygen.js","startLine":0,"startColumn":0,"endLine":247,"endColumn":0,"executionContextId":1,"hash":"04022efb8f4374062cca79d8c839ae7c5b10018e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":7428},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"75","url":"internal/crypto/keys.js","startLine":0,"startColumn":0,"endLine":354,"endColumn":0,"executionContextId":1,"hash":"36be685a5773065c63c4955052312e501cb10737","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":10202},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"76","url":"internal/crypto/diffiehellman.js","startLine":0,"startColumn":0,"endLine":237,"endColumn":0,"executionContextId":1,"hash":"3afc64e85b0b7c2e1b4c4c9a2f1f917261d2f427","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6332},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"77","url":"internal/crypto/cipher.js","startLine":0,"startColumn":0,"endLine":280,"endColumn":0,"executionContextId":1,"hash":"1c6084431dae7078781e35be3d621e522d91e073","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":8128},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"78","url":"internal/streams/lazy_transform.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":0,"executionContextId":1,"hash":"1095be563e2c1430312feb1451ea3363421e68c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1654},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"79","url":"stream.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":0,"executionContextId":1,"hash":"33d1bbb37c2931a703973ace73423dfe469d4e06","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3317},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"80","url":"internal/streams/pipeline.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":0,"executionContextId":1,"hash":"2e103acc290f0b6b4e76b14e3f244bb0587954cf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2228},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"81","url":"internal/streams/end-of-stream.js","startLine":0,"startColumn":0,"endLine":103,"endColumn":0,"executionContextId":1,"hash":"21194a3d652bdb6655d573f52da9570d39ed10eb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3017},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"82","url":"internal/streams/legacy.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":0,"executionContextId":1,"hash":"2c8121300465f77b57589e1364caead30690e83c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2056},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"83","url":"_stream_readable.js","startLine":0,"startColumn":0,"endLine":1218,"endColumn":0,"executionContextId":1,"hash":"38487c3438863b984790ba715663799922d1578d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":37132},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"84","url":"internal/streams/buffer_list.js","startLine":0,"startColumn":0,"endLine":171,"endColumn":0,"executionContextId":1,"hash":"2005000d5897618645769c6d6113c3f87feb128c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3766},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"85","url":"internal/streams/destroy.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":0,"executionContextId":1,"hash":"181cf0ec1c9750675cfcbfc8b0788efa0e27d1bf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3092},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"86","url":"internal/streams/state.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":0,"executionContextId":1,"hash":"236f9407961bc74b718fc3a63744d5635eadef2f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":733},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"87","url":"_stream_writable.js","startLine":0,"startColumn":0,"endLine":732,"endColumn":0,"executionContextId":1,"hash":"332b92b6468b2fd55f2c9f1e002d91ae3345a130","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":21373},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"88","url":"_stream_duplex.js","startLine":0,"startColumn":0,"endLine":151,"endColumn":0,"executionContextId":1,"hash":"0915718f3389cbc634146f9aa04647cf56c29e40","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":4594},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"89","url":"_stream_transform.js","startLine":0,"startColumn":0,"endLine":219,"endColumn":0,"executionContextId":1,"hash":"2dca05b2a607bb084f9dc8e558e581552a9bcc7e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":7688},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"90","url":"_stream_passthrough.js","startLine":0,"startColumn":0,"endLine":45,"endColumn":0,"executionContextId":1,"hash":"064206152eba4d6938fe2bea4e210f3117c4e031","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1738},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"91","url":"internal/crypto/sig.js","startLine":0,"startColumn":0,"endLine":208,"endColumn":0,"executionContextId":1,"hash":"24d50f31899a276551a828a5933005632a8b61d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5246},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"92","url":"internal/crypto/hash.js","startLine":0,"startColumn":0,"endLine":135,"endColumn":0,"executionContextId":1,"hash":"0a4ccd7b77934710642dbd17073a63cd4b73ad7c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3712},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"93","url":"internal/crypto/certificate.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":0,"executionContextId":1,"hash":"03aed6fc5f90c3f762ea3017b426a47b0d709b56","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1536},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100453,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"94","url":"internal/fs/read_file_context.js","startLine":0,"startColumn":0,"endLine":117,"endColumn":0,"executionContextId":1,"hash":"0f38fe93279aff052003949d3bba4923616cfeaa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2920},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"95","url":"original-fs.js","startLine":0,"startColumn":0,"endLine":1892,"endColumn":0,"executionContextId":1,"hash":"214964950907bdfc21ffd190616a53c23d453e5b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":50668},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"96","url":"file:///Users/roblou/code/vscode/out/vs/nls.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"35b6003b7a40894a26a7afda629492e8532b57a6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6991},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"97","url":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"041f07e7461e6e94476d0664733df5c85fbdb59e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbench.desktop.main.js.map","hasSourceURL":false,"isModule":false,"length":5950},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":3,"executionContextId":1,"hash":"0cad6d339ab4d8254a145ba26d5db9170657f3b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5739},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"99","url":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.nls.js","startLine":0,"startColumn":0,"endLine":8,"endColumn":3,"executionContextId":1,"hash":"2751241a4830c1cc7e94fd89060e9f8767b25dc4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":496},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"100","url":"file:///Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"203f694b8e9f6d0804b06f91185d205433fb8cbe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"credentials.js.map","hasSourceURL":false,"isModule":false,"length":797},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"101","url":"file:///Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"0707cff0427905d93b03aaff878bec3226eefd80","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"credentialsService.js.map","hasSourceURL":false,"isModule":false,"length":1823},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"102","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js","startLine":0,"startColumn":0,"endLine":208,"endColumn":3,"executionContextId":1,"hash":"0833d2071e2d12ec4bb06baa84fe5832471424b6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"titlebarPart.js.map","hasSourceURL":false,"isModule":false,"length":13110},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"103","url":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":3,"executionContextId":1,"hash":"3a2430bc40992a794b1224450df379497927741d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbench.common.main.js.map","hasSourceURL":false,"isModule":false,"length":11121},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"0a2d334b1c0f660a16595b7d58927cef5e862c39","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"titleService.js.map","hasSourceURL":false,"isModule":false,"length":779},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"105","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js","startLine":0,"startColumn":0,"endLine":318,"endColumn":3,"executionContextId":1,"hash":"34619f2b9840bc313ac4ab6c9962cd78283eeafb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"desktop.contribution.js.map","hasSourceURL":false,"isModule":false,"length":22136},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"106","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js","startLine":0,"startColumn":0,"endLine":167,"endColumn":3,"executionContextId":1,"hash":"0f6f183081691728652ad86ba6a894ca19c7e832","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileDialogService.js.map","hasSourceURL":false,"isModule":false,"length":10774},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"107","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js","startLine":0,"startColumn":0,"endLine":148,"endColumn":3,"executionContextId":1,"hash":"0928c53b7d69fe513d4cadfcad42edaa2f496cef","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"integrityService.js.map","hasSourceURL":false,"isModule":false,"length":7610},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"108","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js","startLine":0,"startColumn":0,"endLine":219,"endColumn":3,"executionContextId":1,"hash":"0d1b4b688c2b00827667cedac49688087ee4720f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textMateService.js.map","hasSourceURL":false,"isModule":false,"length":11892},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"109","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js","startLine":0,"startColumn":0,"endLine":184,"endColumn":3,"executionContextId":1,"hash":"070bb5400c75a6c65b1076548158be61811b0112","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchService.js.map","hasSourceURL":false,"isModule":false,"length":10636},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","startLine":0,"startColumn":0,"endLine":233,"endColumn":3,"executionContextId":1,"hash":"33ccba2c5235240357657f074415363852660725","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"desktop.main.js.map","hasSourceURL":false,"isModule":false,"length":17058},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"111","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js","startLine":0,"startColumn":0,"endLine":364,"endColumn":3,"executionContextId":1,"hash":"31d4e4f836d73546542ad27ba20d3f9b2670ea60","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"nativeTextFileService.js.map","hasSourceURL":false,"isModule":false,"length":23913},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"112","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js","startLine":0,"startColumn":0,"endLine":200,"endColumn":3,"executionContextId":1,"hash":"0aeccf65104c7af35ac668ea29f87ede2666d862","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dialogService.js.map","hasSourceURL":false,"isModule":false,"length":12406},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"113","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"235012c85966b352630ba8b34a2a994142a23155","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybinding.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2170},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"114","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js","startLine":0,"startColumn":0,"endLine":128,"endColumn":3,"executionContextId":1,"hash":"135b47aa55347d1d040ebd123d84fc855bb22390","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"nativeKeymapService.js.map","hasSourceURL":false,"isModule":false,"length":7066},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"115","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js","startLine":0,"startColumn":0,"endLine":195,"endColumn":3,"executionContextId":1,"hash":"050493a48b6363dc39c6245e8630a4f35a8778a7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputChannelModelService.js.map","hasSourceURL":false,"isModule":false,"length":11402},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"116","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"29c29369806b989520f6403845734df621310202","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagementServerService.js.map","hasSourceURL":false,"isModule":false,"length":5242},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100454,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","startLine":0,"startColumn":0,"endLine":565,"endColumn":3,"executionContextId":1,"hash":"258d50e67d20839f7b8878b3a4c2eded7a493f28","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionService.js.map","hasSourceURL":false,"isModule":false,"length":37134},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"118","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js","startLine":0,"startColumn":0,"endLine":71,"endColumn":3,"executionContextId":1,"hash":"2ff684c76adcd5096b7971804cb8e821160f6de6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryService.js.map","hasSourceURL":false,"isModule":false,"length":5216},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"119","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":3,"executionContextId":1,"hash":"35e2ccee430df9474e2228bcc8a122772682c712","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextmenuService.js.map","hasSourceURL":false,"isModule":false,"length":10648},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"120","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"18ef4d767dea956a66111147c979f4e90de91c8e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationResolverService.js.map","hasSourceURL":false,"isModule":false,"length":3427},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"121","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"1acc732e82e1033605ca865126b1ec04634e2378","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionTipsService.js.map","hasSourceURL":false,"isModule":false,"length":3538},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"122","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"35ae40b9377e4f734f6e931ebad273225091f877","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"accessibilityService.js.map","hasSourceURL":false,"isModule":false,"length":5901},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"123","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"38df6ec933731d457583c65983d1a8d01482a8b5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAgentServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":3166},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"124","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js","startLine":0,"startColumn":0,"endLine":22,"endColumn":3,"executionContextId":1,"hash":"04317bb18706384e13fe37486c15b66468774f54","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagementService.js.map","hasSourceURL":false,"isModule":false,"length":1861},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"125","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"25d89bdc6a4c37c05e8e014e382c4a686a0c42cf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"urlService.js.map","hasSourceURL":false,"isModule":false,"length":4196},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"126","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js","startLine":0,"startColumn":0,"endLine":145,"endColumn":3,"executionContextId":1,"hash":"0ca0a4c09aaf1edc17ec63a071cf6d740bf7606a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tunnelService.js.map","hasSourceURL":false,"isModule":false,"length":8741},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"127","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"2e4260fe18a60ef9370e505d1e41db965dae56eb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspacesService.js.map","hasSourceURL":false,"isModule":false,"length":2498},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"128","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js","startLine":0,"startColumn":0,"endLine":25,"endColumn":3,"executionContextId":1,"hash":"11fbdc849440f750351fc50d5b784b5318ae7039","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backupFileService.js.map","hasSourceURL":false,"isModule":false,"length":1550},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"129","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"3570ad766ebb60c4720358ab9dfb4d8529dbc6a5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storageKeysSyncRegistryService.js.map","hasSourceURL":false,"isModule":false,"length":2316},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"130","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js","startLine":0,"startColumn":0,"endLine":37,"endColumn":3,"executionContextId":1,"hash":"1b7bf50246cae47115ee115c3bd4d1b36714fd5d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataAutoSyncService.js.map","hasSourceURL":false,"isModule":false,"length":2643},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"131","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"32a15042089961e51533557c13f0005930ca5e0a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"authenticationTokenService.js.map","hasSourceURL":false,"isModule":false,"length":3083},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"132","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"3438ddfb7ddb42a014cfafe145ea5d5472c9fc77","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"authenticationService.js.map","hasSourceURL":false,"isModule":false,"length":6296},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"133","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"356819d17d533ecb48d2217971c3cd847217bbfd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceEditingService.js.map","hasSourceURL":false,"isModule":false,"length":12114},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"134","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":3,"executionContextId":1,"hash":"2e53a6bd263baeac234a888c24fcb3c55709fdff","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncService.js.map","hasSourceURL":false,"isModule":false,"length":7390},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"135","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":3,"executionContextId":1,"hash":"3744f070753813aa3096d9c50bbdf6610f38d7d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"requestService.js.map","hasSourceURL":false,"isModule":false,"length":2615},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"136","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"1bcab17223978bed1c942c71ca2bc9aa21086f54","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"electronService.js.map","hasSourceURL":false,"isModule":false,"length":2402},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100455,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"137","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js","startLine":0,"startColumn":0,"endLine":143,"endColumn":3,"executionContextId":1,"hash":"138d98a35d82391c6b4ccbaaa9367902175727f0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lifecycleService.js.map","hasSourceURL":false,"isModule":false,"length":8550},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"138","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"1629fd23822842a265129e0d2374682a5bc9f932","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"localizationsService.js.map","hasSourceURL":false,"isModule":false,"length":2265},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"139","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"0dacf224702a959245842d97c89f8be44656457f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"desktopHostService.js.map","hasSourceURL":false,"isModule":false,"length":5112},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"140","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"227d16418444aced74267fe8ba1759627f6a71d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"updateService.js.map","hasSourceURL":false,"isModule":false,"length":3425},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"141","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"0d745552347272067ee791547c4994a2047bb01e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menubarService.js.map","hasSourceURL":false,"isModule":false,"length":2149},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"142","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"20184a88827c44591817bfe328d5884c1712f85c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sharedProcessService.js.map","hasSourceURL":false,"isModule":false,"length":3379},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"143","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"1d130bba365d34bd4f8b2d11811bb9dc278168ad","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"issueService.js.map","hasSourceURL":false,"isModule":false,"length":2115},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"144","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js","startLine":0,"startColumn":0,"endLine":233,"endColumn":3,"executionContextId":1,"hash":"17e3e6529a679f880318675b538ce6f62d3394f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"localizations.contribution.js.map","hasSourceURL":false,"isModule":false,"length":18093},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"145","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"35dfd56c950b3cf049562806347cc3bd2699aec6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"clipboardService.js.map","hasSourceURL":false,"isModule":false,"length":3148},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"146","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js","startLine":0,"startColumn":0,"endLine":465,"endColumn":3,"executionContextId":1,"hash":"3cf8f7c8739ac73712232e7c22b98d643f28932d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceTagsService.js.map","hasSourceURL":false,"isModule":false,"length":35003},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"147","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"02453ed32b12d48515814ee64f6d5e9c2f26f8f1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionResourceLoaderService.js.map","hasSourceURL":false,"isModule":false,"length":2451},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"148","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"0404d8a635cae15d0e6eb8fe646e7e6d099707f8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pathService.js.map","hasSourceURL":false,"isModule":false,"length":2368},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"149","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"3e387018652a30b350e8d198a2838bf10e27bc53","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tags.contribution.js.map","hasSourceURL":false,"isModule":false,"length":978},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"150","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js","startLine":0,"startColumn":0,"endLine":13,"endColumn":3,"executionContextId":1,"hash":"1071414d2817035536268b873e9bc645738a0648","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logs.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1360},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"151","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"1cbd417264e749a1323075bac490a0a24ed41ca9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileActions.contribution.js.map","hasSourceURL":false,"isModule":false,"length":5037},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"152","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":3,"executionContextId":1,"hash":"3bbf9e323cd5c6fe029976ab847434564b0140b8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"files.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1580},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"153","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js","startLine":0,"startColumn":0,"endLine":116,"endColumn":3,"executionContextId":1,"hash":"086b051c589435963fa0d4b0409384d624591e6c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"partsSplash.contribution.js.map","hasSourceURL":false,"isModule":false,"length":9261},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"154","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"3ed85531651e99c214771e169c521bd304ba6aea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backup.contribution.js.map","hasSourceURL":false,"isModule":false,"length":973},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"155","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js","startLine":0,"startColumn":0,"endLine":29,"endColumn":3,"executionContextId":1,"hash":"0ae05e5a0e16b26f224b15693efafa2f8198adec","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugHelperService.js.map","hasSourceURL":false,"isModule":false,"length":1943},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"156","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":3,"executionContextId":1,"hash":"227e9c174f7ba87d132464ec4d0ab9117860ce61","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminal.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1912},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"157","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"3ae27cd317103f0680053c056b8e2e8f73b309ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebook.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3134},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"158","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js","startLine":0,"startColumn":0,"endLine":209,"endColumn":3,"executionContextId":1,"hash":"08eb474446df07d93b86b97e13c814c15e110c9a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remote.contribution.js.map","hasSourceURL":false,"isModule":false,"length":13802},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"159","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js","startLine":0,"startColumn":0,"endLine":9,"endColumn":3,"executionContextId":1,"hash":"2d3c6266173d3e3a25f409a876c850490e85c454","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeEditor.contribution.js.map","hasSourceURL":false,"isModule":false,"length":716},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"160","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js","startLine":0,"startColumn":0,"endLine":382,"endColumn":3,"executionContextId":1,"hash":"29a353bb2d81a463242231d4841e09c92a58f07f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"externalTerminalService.js.map","hasSourceURL":false,"isModule":false,"length":20925},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100456,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"161","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"093409aa7a9f8afa4f3bc240532c2a5d39b8c75a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHostDebugService.js.map","hasSourceURL":false,"isModule":false,"length":2512},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"162","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"0efd13807330b3710e260d7323d93afc68d56f5c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webview.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2956},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"163","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"1f1ff93c3998ea984ce6bde3260080ed16cc32d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"performance.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2661},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"164","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":3,"executionContextId":1,"hash":"06bb10a67a4743a50667cfc60e93d854557b67bc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensions.contribution.js.map","hasSourceURL":false,"isModule":false,"length":9234},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"165","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js","startLine":0,"startColumn":0,"endLine":174,"endColumn":3,"executionContextId":1,"hash":"3e98dc246fb5ff7248701202bdd1ea595e3cd04e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cli.contribution.js.map","hasSourceURL":false,"isModule":false,"length":10693},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"166","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"3ed3616c0284e9245a20af970128b7391b76a349","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"issue.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3042},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"167","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js","startLine":0,"startColumn":0,"endLine":212,"endColumn":3,"executionContextId":1,"hash":"14c73d7b7e45582c07c14e44b143ce710e6d0567","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themes.test.contribution.js.map","hasSourceURL":false,"isModule":false,"length":11654},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"168","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"0c8d76754bf27dd47388b12610146a066726a3fd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensions.js.map","hasSourceURL":false,"isModule":false,"length":1127},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"id":14,"result":{"debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"id":15,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"id":16,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"id":17,"result":{"breakpointId":"8:beforeScriptWithSourceMapExecution"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"id":18,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"169","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js","startLine":0,"startColumn":0,"endLine":10,"endColumn":3,"executionContextId":1,"hash":"2e1ffcdb4a09a04a74d8d5e19e1c2d9e6b8a8d5e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryOptOut.contribution.js.map","hasSourceURL":false,"isModule":false,"length":978,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425100457,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"169","lineNumber":0,"columnNumber":0},"location":{"scriptId":"169","lineNumber":0,"columnNumber":0},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js","scopeChain":[{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1}"},"startLocation":{"scriptId":"169","lineNumber":0,"columnNumber":0},"endLocation":{"scriptId":"169","lineNumber":10,"columnNumber":3}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2}"}}],"this":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":3}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"runInThisContext","functionLocation":{"scriptId":"47","lineNumber":120,"columnNumber":18},"location":{"scriptId":"47","lineNumber":125,"columnNumber":19},"url":"vm.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":4}"},"name":"runInThisContext","startLocation":{"scriptId":"47","lineNumber":120,"columnNumber":18},"endLocation":{"scriptId":"47","lineNumber":127,"columnNumber":3}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":5}"},"startLocation":{"scriptId":"47","lineNumber":0,"columnNumber":0},"endLocation":{"scriptId":"47","lineNumber":424,"columnNumber":0}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":6}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":7}"}}],"this":{"type":"object","className":"Script","description":"Script","objectId":"{\"injectedScriptId\":1,\"id\":8}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"NodeScriptLoader._createAndEvalScript","functionLocation":{"scriptId":"68","lineNumber":781,"columnNumber":67},"location":{"scriptId":"68","lineNumber":785,"columnNumber":29},"url":"/Users/roblou/code/vscode/out/vs/loader.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":9}"},"name":"NodeScriptLoader._createAndEvalScript","startLocation":{"scriptId":"68","lineNumber":781,"columnNumber":67},"endLocation":{"scriptId":"68","lineNumber":802,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":10}"},"startLocation":{"scriptId":"68","lineNumber":654,"columnNumber":51},"endLocation":{"scriptId":"68","lineNumber":937,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":11}"},"startLocation":{"scriptId":"68","lineNumber":556,"columnNumber":10},"endLocation":{"scriptId":"68","lineNumber":942,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":12}"},"startLocation":{"scriptId":"68","lineNumber":0,"columnNumber":103},"endLocation":{"scriptId":"68","lineNumber":1815,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":13}"},"startLocation":{"scriptId":"68","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"68","lineNumber":1815,"columnNumber":64}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":14}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":15}"}}],"this":{"type":"object","className":"NodeScriptLoader","description":"NodeScriptLoader","objectId":"{\"injectedScriptId\":1,\"id\":16}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"68","lineNumber":761,"columnNumber":106},"location":{"scriptId":"68","lineNumber":775,"columnNumber":39},"url":"/Users/roblou/code/vscode/out/vs/loader.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":17}"},"startLocation":{"scriptId":"68","lineNumber":761,"columnNumber":106},"endLocation":{"scriptId":"68","lineNumber":778,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":18}"},"name":"NodeScriptLoader.load","startLocation":{"scriptId":"68","lineNumber":734,"columnNumber":51},"endLocation":{"scriptId":"68","lineNumber":780,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":19}"},"startLocation":{"scriptId":"68","lineNumber":654,"columnNumber":51},"endLocation":{"scriptId":"68","lineNumber":937,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":20}"},"startLocation":{"scriptId":"68","lineNumber":556,"columnNumber":10},"endLocation":{"scriptId":"68","lineNumber":942,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":21}"},"startLocation":{"scriptId":"68","lineNumber":0,"columnNumber":103},"endLocation":{"scriptId":"68","lineNumber":1815,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":22}"},"startLocation":{"scriptId":"68","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"68","lineNumber":1815,"columnNumber":64}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":23}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":24}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"readFileAfterClose","functionLocation":{"scriptId":"94","lineNumber":38,"columnNumber":27},"location":{"scriptId":"94","lineNumber":60,"columnNumber":2},"url":"internal/fs/read_file_context.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":25}"},"name":"readFileAfterClose","startLocation":{"scriptId":"94","lineNumber":38,"columnNumber":27},"endLocation":{"scriptId":"94","lineNumber":61,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":26}"},"startLocation":{"scriptId":"94","lineNumber":0,"columnNumber":0},"endLocation":{"scriptId":"94","lineNumber":117,"columnNumber":0}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":27}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":28}"}}],"this":{"type":"object","className":"FSReqCallback","description":"FSReqCallback","objectId":"{\"injectedScriptId\":1,\"id\":29}"}}],"reason":"instrumentation","data":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js","scriptId":"169","sourceMapURL":"telemetryOptOut.contribution.js.map"},"hitBreakpoints":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100468,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/primordials.js"},"level":0} {"tag":"dap.send","timestamp":1588425100608,"metadata":{"connectionId":1,"message":{"seq":4,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/primordials.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/primordials.js","sourceReference":602356212}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100609,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/setup.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100609,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/domexception.js"},"level":0} {"tag":"dap.receive","timestamp":1588425100610,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":4}},"level":0} {"tag":"dap.send","timestamp":1588425100610,"metadata":{"connectionId":1,"message":{"seq":5,"type":"response","request_seq":4,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100611,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/loaders.js"},"level":0} {"tag":"dap.send","timestamp":1588425100612,"metadata":{"connectionId":1,"message":{"seq":6,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/setup.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/setup.js","sourceReference":1433241195}}}},"level":0} {"tag":"dap.send","timestamp":1588425100612,"metadata":{"connectionId":1,"message":{"seq":7,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/domexception.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/per_context/domexception.js","sourceReference":514628172}}}},"level":0} {"tag":"dap.send","timestamp":1588425100612,"metadata":{"connectionId":1,"message":{"seq":8,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/loaders.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/loaders.js","sourceReference":1658418402}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100613,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/node.js"},"level":0} {"tag":"dap.send","timestamp":1588425100615,"metadata":{"connectionId":1,"message":{"seq":9,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/node.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/node.js","sourceReference":1826662313}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100616,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/errors.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100617,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util.js"},"level":0} {"tag":"dap.send","timestamp":1588425100619,"metadata":{"connectionId":1,"message":{"seq":10,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/errors.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/errors.js","sourceReference":1984339762}}}},"level":0} {"tag":"dap.send","timestamp":1588425100619,"metadata":{"connectionId":1,"message":{"seq":11,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util.js","sourceReference":388257872}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100620,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/events.js"},"level":0} {"tag":"dap.send","timestamp":1588425100622,"metadata":{"connectionId":1,"message":{"seq":12,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/events.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/events.js","sourceReference":1408510383}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100623,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/inspect.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100624,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/types.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100625,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/assert.js"},"level":0} {"tag":"dap.send","timestamp":1588425100625,"metadata":{"connectionId":1,"message":{"seq":13,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/inspect.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/inspect.js","sourceReference":430488926}}}},"level":0} {"tag":"dap.send","timestamp":1588425100625,"metadata":{"connectionId":1,"message":{"seq":14,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/types.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/types.js","sourceReference":1524221498}}}},"level":0} {"tag":"dap.send","timestamp":1588425100625,"metadata":{"connectionId":1,"message":{"seq":15,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/assert.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/assert.js","sourceReference":1389162277}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100626,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/buffer.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100628,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/validators.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100628,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/buffer.js"},"level":0} {"tag":"dap.send","timestamp":1588425100628,"metadata":{"connectionId":1,"message":{"seq":16,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/buffer.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/buffer.js","sourceReference":506216614}}}},"level":0} {"tag":"dap.send","timestamp":1588425100628,"metadata":{"connectionId":1,"message":{"seq":17,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/validators.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/validators.js","sourceReference":1378663291}}}},"level":0} {"tag":"dap.send","timestamp":1588425100628,"metadata":{"connectionId":1,"message":{"seq":18,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/buffer.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/buffer.js","sourceReference":617130116}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100631,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/per_thread.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100633,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/main_thread_only.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100633,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/stdio.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100633,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/async_hooks.js"},"level":0} {"tag":"dap.send","timestamp":1588425100633,"metadata":{"connectionId":1,"message":{"seq":19,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/per_thread.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/per_thread.js","sourceReference":1908459694}}}},"level":0} {"tag":"dap.send","timestamp":1588425100633,"metadata":{"connectionId":1,"message":{"seq":20,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/main_thread_only.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/main_thread_only.js","sourceReference":967233294}}}},"level":0} {"tag":"dap.send","timestamp":1588425100634,"metadata":{"connectionId":1,"message":{"seq":21,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/stdio.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/stdio.js","sourceReference":1909780209}}}},"level":0} {"tag":"dap.send","timestamp":1588425100635,"metadata":{"connectionId":1,"message":{"seq":22,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/async_hooks.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/async_hooks.js","sourceReference":305563306}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100636,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/task_queues.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100637,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/promises.js"},"level":0} {"tag":"dap.send","timestamp":1588425100638,"metadata":{"connectionId":1,"message":{"seq":23,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/task_queues.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/task_queues.js","sourceReference":2029616815}}}},"level":0} {"tag":"dap.send","timestamp":1588425100638,"metadata":{"connectionId":1,"message":{"seq":24,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/promises.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/promises.js","sourceReference":125578510}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100639,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fixed_queue.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100641,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/path.js"},"level":0} {"tag":"dap.send","timestamp":1588425100642,"metadata":{"connectionId":1,"message":{"seq":25,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fixed_queue.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fixed_queue.js","sourceReference":940005582}}}},"level":0} {"tag":"dap.send","timestamp":1588425100642,"metadata":{"connectionId":1,"message":{"seq":26,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/path.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/path.js","sourceReference":1424497686}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100643,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/execution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100644,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/constants.js"},"level":0} {"tag":"dap.send","timestamp":1588425100645,"metadata":{"connectionId":1,"message":{"seq":27,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/execution.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/execution.js","sourceReference":969726965}}}},"level":0} {"tag":"dap.send","timestamp":1588425100645,"metadata":{"connectionId":1,"message":{"seq":28,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/constants.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/constants.js","sourceReference":2079376882}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100647,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/timers.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100647,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/warning.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100648,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/linkedlist.js"},"level":0} {"tag":"dap.send","timestamp":1588425100648,"metadata":{"connectionId":1,"message":{"seq":29,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/timers.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/timers.js","sourceReference":343614922}}}},"level":0} {"tag":"dap.send","timestamp":1588425100648,"metadata":{"connectionId":1,"message":{"seq":30,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/warning.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/process/warning.js","sourceReference":1531631654}}}},"level":0} {"tag":"dap.send","timestamp":1588425100648,"metadata":{"connectionId":1,"message":{"seq":31,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/linkedlist.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/linkedlist.js","sourceReference":1057191115}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100649,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/priority_queue.js"},"level":0} {"tag":"dap.send","timestamp":1588425100651,"metadata":{"connectionId":1,"message":{"seq":32,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/priority_queue.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/priority_queue.js","sourceReference":888415987}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100654,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/debuglog.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100654,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/environment.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100655,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/pre_execution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100656,"metadata":{"connectionId":1,"message":{"seq":33,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/debuglog.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/util/debuglog.js","sourceReference":1055177918}}}},"level":0} {"tag":"dap.send","timestamp":1588425100656,"metadata":{"connectionId":1,"message":{"seq":34,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/environment.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/environment.js","sourceReference":333430890}}}},"level":0} {"tag":"dap.send","timestamp":1588425100656,"metadata":{"connectionId":1,"message":{"seq":35,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/pre_execution.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/bootstrap/pre_execution.js","sourceReference":446395609}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100657,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/options.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100657,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/inspector_async_hook.js"},"level":0} {"tag":"dap.send","timestamp":1588425100659,"metadata":{"connectionId":1,"message":{"seq":36,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/options.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/options.js","sourceReference":787776983}}}},"level":0} {"tag":"dap.send","timestamp":1588425100659,"metadata":{"connectionId":1,"message":{"seq":37,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/inspector_async_hook.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/inspector_async_hook.js","sourceReference":1507833988}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100661,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/url.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100662,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/vm.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100663,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/querystring.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100663,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/modules/cjs/loader.js"},"level":0} {"tag":"dap.send","timestamp":1588425100664,"metadata":{"connectionId":1,"message":{"seq":38,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/url.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/url.js","sourceReference":445510638}}}},"level":0} {"tag":"dap.send","timestamp":1588425100664,"metadata":{"connectionId":1,"message":{"seq":39,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/vm.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/vm.js","sourceReference":1512991145}}}},"level":0} {"tag":"dap.send","timestamp":1588425100664,"metadata":{"connectionId":1,"message":{"seq":40,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/querystring.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/querystring.js","sourceReference":733840354}}}},"level":0} {"tag":"dap.send","timestamp":1588425100664,"metadata":{"connectionId":1,"message":{"seq":41,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/modules/cjs/loader.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/modules/cjs/loader.js","sourceReference":1657866295}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100664,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/fs.js"},"level":0} {"tag":"dap.send","timestamp":1588425100667,"metadata":{"connectionId":1,"message":{"seq":42,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/fs.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/fs.js","sourceReference":1616039197}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100672,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/url.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100673,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100674,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/utils.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100674,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/idna.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100674,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","absolutePath":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js"},"level":0} {"tag":"dap.send","timestamp":1588425100675,"metadata":{"connectionId":1,"message":{"seq":43,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/url.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/url.js","sourceReference":2057500904}}}},"level":0} {"tag":"dap.send","timestamp":1588425100675,"metadata":{"connectionId":1,"message":{"seq":44,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/VM633756690","path":"/VM633756690","sourceReference":633756690}}}},"level":0} {"tag":"dap.send","timestamp":1588425100675,"metadata":{"connectionId":1,"message":{"seq":45,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/utils.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/utils.js","sourceReference":723962426}}}},"level":0} {"tag":"dap.send","timestamp":1588425100675,"metadata":{"connectionId":1,"message":{"seq":46,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/idna.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/idna.js","sourceReference":394562674}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100675,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/modules/cjs/helpers.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100676,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/performance.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/performance.js"},"level":0} {"tag":"dap.send","timestamp":1588425100676,"metadata":{"connectionId":1,"message":{"seq":47,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100676,"metadata":{"connectionId":1,"message":{"seq":48,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/modules/cjs/helpers.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/modules/cjs/helpers.js","sourceReference":2115113489}}}},"level":0} {"tag":"dap.send","timestamp":1588425100677,"metadata":{"connectionId":1,"message":{"seq":49,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/performance.js","path":"/Users/roblou/code/vscode/out/vs/base/common/performance.js","sourceReference":508189908}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100678,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/bootstrap-window.js","absolutePath":"/Users/roblou/code/vscode/out/bootstrap-window.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100678,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/module.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100678,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar_init.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100678,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100679,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/bootstrap.js","absolutePath":"/Users/roblou/code/vscode/out/bootstrap.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100679,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/util.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100680,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/loader.js","absolutePath":"/Users/roblou/code/vscode/out/vs/loader.js"},"level":0} {"tag":"dap.send","timestamp":1588425100680,"metadata":{"connectionId":1,"message":{"seq":50,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/bootstrap-window.js","path":"/Users/roblou/code/vscode/out/bootstrap-window.js","sourceReference":1716795465}}}},"level":0} {"tag":"dap.send","timestamp":1588425100680,"metadata":{"connectionId":1,"message":{"seq":51,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/module.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/module.js","sourceReference":718853185}}}},"level":0} {"tag":"dap.send","timestamp":1588425100680,"metadata":{"connectionId":1,"message":{"seq":52,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar_init.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar_init.js","sourceReference":617235323}}}},"level":0} {"tag":"dap.send","timestamp":1588425100680,"metadata":{"connectionId":1,"message":{"seq":53,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar.js","sourceReference":874660623}}}},"level":0} {"tag":"dap.send","timestamp":1588425100680,"metadata":{"connectionId":1,"message":{"seq":54,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/util.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/util.js","sourceReference":296087419}}}},"level":0} {"tag":"dap.send","timestamp":1588425100681,"metadata":{"connectionId":1,"message":{"seq":55,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/bootstrap.js","path":"/Users/roblou/code/vscode/out/bootstrap.js","sourceReference":2080452085}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100682,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/encoding.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100682,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/promises.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100683,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/main/run_main_module.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100684,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar_init.js"},"level":0} {"tag":"dap.send","timestamp":1588425100684,"metadata":{"connectionId":1,"message":{"seq":56,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/loader.js","path":"/Users/roblou/code/vscode/out/vs/loader.js","sourceReference":1818165035}}}},"level":0} {"tag":"dap.send","timestamp":1588425100684,"metadata":{"connectionId":1,"message":{"seq":57,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/encoding.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/encoding.js","sourceReference":1482479813}}}},"level":0} {"tag":"dap.send","timestamp":1588425100684,"metadata":{"connectionId":1,"message":{"seq":58,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/promises.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/promises.js","sourceReference":934778226}}}},"level":0} {"tag":"dap.send","timestamp":1588425100684,"metadata":{"connectionId":1,"message":{"seq":59,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/main/run_main_module.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/main/run_main_module.js","sourceReference":376740854}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100685,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/timers.js"},"level":0} {"tag":"dap.send","timestamp":1588425100686,"metadata":{"connectionId":1,"message":{"seq":60,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar_init.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/asar_init.js","sourceReference":617235324}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100686,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"level":0} {"tag":"dap.send","timestamp":1588425100690,"metadata":{"connectionId":1,"message":{"seq":61,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/timers.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/timers.js","sourceReference":1287280963}}}},"level":0} {"tag":"dap.send","timestamp":1588425100690,"metadata":{"connectionId":1,"message":{"seq":62,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js","sourceReference":717572971}}}},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100716,"message":"SourceMap: mapping webpack:///webpack/bootstrap => /Users/roblou/code/vscode/webpack/bootstrap, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100716,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///webpack/bootstrap","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/webpack/bootstrap","resolvedUrl":"file:///Users/roblou/code/vscode/webpack/bootstrap","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100718,"message":"SourceMap: mapping webpack:///lib/browser/api/module-keys.js => /Users/roblou/code/vscode/lib/browser/api/module-keys.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100718,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/browser/api/module-keys.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/browser/api/module-keys.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/browser/api/module-keys.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100719,"message":"SourceMap: mapping webpack:///lib/common/api/clipboard.js => /Users/roblou/code/vscode/lib/common/api/clipboard.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100719,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/api/clipboard.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsK0JBQStCO0FBQ25FO0FBQ0E7QUFDQSxzQkFBc0IsMENBQTBDO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9EQUFvRCxtQkFBbUI7O0FBRXZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCxpQkFBaUIseUJBQXlCO0FBQzFDLFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLGtGQUEyQztBQUNyRCxJQUFJLG1CQUFPLENBQUMsb0ZBQTRDOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDdldBLDZEQUFzQztBQUV0QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXJELE1BQU0sUUFBUyxTQUFRLHFCQUFZO0lBQ2pDLFlBQW9CLE9BQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBR2pDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQkFBb0IsQ0FBRSxHQUFHLElBQWdCO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsbUJBQW1CLENBQUUsR0FBRyxJQUFnQjtRQUN0QyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGVBQWUsQ0FBRSxHQUFHLElBQWdCO1FBQ2xDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCx3QkFBd0I7QUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLEVBQUU7SUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSw0Q0FBNEM7UUFDdkUscUVBQXFFO1FBQ3JFLDBCQUEwQjtRQUN6QixRQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsSUFBZ0I7WUFDL0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztLQUNIO0NBQ0Y7QUFFRCwwREFBMEQ7QUFDMUQscUVBQXFFO0FBQ3JFLFNBQVMsV0FBVyxDQUFFLE9BQWU7SUFDbkMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXZDLGtCQUFlLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BFekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxNQUFhLGlCQUFpQjtJQUE5QjtRQUNVLFdBQU0sR0FBVyxDQUFDO1FBQ2xCLGNBQVMsR0FBNkIsRUFBRTtJQWtEbEQsQ0FBQztJQWhEQyxHQUFHLENBQUUsUUFBa0I7UUFDckIsaUNBQWlDO1FBQ2pDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQVMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBRSxJQUFJLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFFdEIsb0VBQW9FO1FBQ3BFLHFEQUFxRDtRQUNyRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUV6QixJQUFJLGVBQWUsQ0FBQztRQUNwQixJQUFJLEtBQUssQ0FBQztRQUVWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFBRSxTQUFTO1lBQzVDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQUUsU0FBUztZQUNqRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO2dCQUFFLFNBQVM7WUFFakQsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLElBQUksR0FBRztnQkFBRSxlQUFlLEdBQUcsR0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE1BQU07U0FDUDtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDN0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsR0FBRyxDQUFFLEVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksY0FBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBRSxFQUFVLEVBQUUsR0FBRyxJQUFXO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxFQUFVO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxRQUFRLEVBQUU7WUFDWixNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7Q0FDRjtBQXBERCw4Q0FvREM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0REQsd0pBQXdGO0FBQ3hGLDZKQUE0RjtBQUM1RixrREFBMkI7QUFFM0IsOEhBQXFFO0FBRXJFLE1BQU0sR0FBRztJQUdQLFlBQWEsS0FBYTtRQUN4QixJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGFBQWE7SUFLakIsWUFBYSxLQUFhLEVBQUUsV0FBbUI7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxzQkFBc0IsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBRUQsTUFBTSxJQUFJO0lBTVIsWUFBb0IsS0FBYSxFQUFTLE1BQWMsRUFBRSxXQUFtQixFQUFTLElBQVk7UUFBOUUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBOEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUwzRixpQkFBWSxHQUFZLEtBQUs7UUFDN0IsaUJBQVksR0FBRyxJQUFJLGFBQUssRUFBRTtRQUMxQixjQUFTLEdBQUcsSUFBSSxhQUFLLEVBQUU7UUFJNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGFBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVwRCwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCwyQ0FBbUIsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLE1BQU0sRUFBRSxFQUFFLENBQzFELE1BQXNCLEVBQUUsT0FBWSxFQUNwQyxFQUFFO1lBQ0YsTUFBTSxZQUFZLEdBQUcsY0FBYyxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QiwyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwwQkFBMEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUUsT0FBWTtRQUN2QiwyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwyQkFBMkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLDJDQUFtQixDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELHFDQUFxQztBQUNyQyxTQUFnQixRQUFRLENBQUUsV0FBbUIsRUFBRSxPQUFZO0lBQ3pELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFFckQsMkNBQW1CLENBQUMsRUFBRSxDQUFDLDRCQUE0QixXQUFXLEVBQUUsRUFBRSxDQUNoRSxNQUFzQixFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsV0FBNkIsRUFDcEYsRUFBRTtRQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQztJQUVILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsV0FBVyxFQUFFLEVBQUUsQ0FDakUsTUFBc0IsRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUN0RCxFQUFFO1FBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsMkNBQW1CLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLENBQUMsTUFBc0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtRQUN4RixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLE1BQXNCLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDeEYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE9BQU8sR0FBRztRQUNmLEVBQUUsRUFBRSxXQUFXO1FBRWYsZ0VBQWdFO1FBQ2hFLE1BQU0sRUFBRSxVQUFVLElBQVk7WUFDNUIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNoQixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsV0FBVztnQkFDckIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLFdBQVcsRUFBRTtZQUNYLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN2RixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sQ0FBRSxHQUFHLElBQWdCO1lBQzFCLDJCQUEyQjtZQUMzQixJQUFJLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztZQUNwQyxJQUFJLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDTCxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3pDO1lBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDaEgsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxXQUFXLENBQUUsR0FBRyxJQUFnQjtZQUM5QiwyQkFBMkI7WUFDM0IsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7WUFDdEMsSUFBSSxPQUFlLENBQUM7WUFDcEIsSUFBSSxPQUEyQixDQUFDO1lBQ2hDLElBQUksZ0JBQWdCLEdBQW9DLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztZQUVqRSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUMvQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDL0I7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQzthQUNsQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUMvQjtxQkFBTTtvQkFDTCxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2FBQ0Y7aUJBQU07Z0JBQ0wsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN4QztZQUVELElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQzthQUM1QztZQUVELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsU0FBUyxFQUFFLElBQUksYUFBSyxFQUFFO1FBQ3RCLFNBQVMsRUFBRSxJQUFJLGFBQUssRUFBRTtRQUN0QixXQUFXLEVBQUUsSUFBSSxhQUFLLEVBQUU7S0FDekIsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixvRUFBb0U7UUFDcEUsYUFBYSxDQUNYLEtBQWEsRUFDYixPQUF5QyxFQUN6QyxpQkFBb0QsR0FBRyxFQUFFLEdBQUUsQ0FBQztZQUU1RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7aUJBQy9FLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxrRUFBa0U7UUFDbEUsV0FBVyxDQUNULEtBQWEsRUFDYixPQUFZLEVBQ1osUUFBd0MsRUFDeEMsbUJBQW9ELEdBQUcsRUFBRSxHQUFFLENBQUM7WUFFNUQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUcsQ0FBQztRQUVELFNBQVMsRUFBRSxJQUFJLGFBQUssRUFBRTtRQUN0QixTQUFTLEVBQUUsSUFBSSxhQUFLLEVBQUU7UUFDdEIsU0FBUyxFQUFFLElBQUksYUFBSyxFQUFFO0tBQ3ZCLENBQUM7SUFFRixNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07UUFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1FBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUztLQUNwQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBTyxDQUFDLDRGQUFnRCxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlGLE1BQU0sQ0FBQyxVQUFVLEdBQUc7UUFDbEIsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQztRQUNWLFFBQVEsS0FBSyxDQUFDO1FBQ2QsUUFBUSxLQUFLLENBQUM7UUFDZCxPQUFPLEtBQUssQ0FBQztRQUNiLFFBQVEsS0FBSyxDQUFDO1FBQ2QsUUFBUSxLQUFLLENBQUM7S0FDZixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRyxtQkFBTyxDQUFDLHNGQUE2QyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsbUJBQU8sQ0FBQywwR0FBdUQsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhHLDZGQUE2RjtJQUM3RixNQUFNLENBQUMsYUFBYSxHQUFHO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2IsUUFBUSxLQUFLLENBQUM7S0FDZixDQUFDO0FBQ0osQ0FBQztBQXpKRCw0QkF5SkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3TkQsaUdBQW9DO0FBRXBDLDZKQUE0RjtBQUU1RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxELE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkI7OztPQUdHO0lBQ0gseUJBQXlCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Q0FDbkMsQ0FBQztBQUVGLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7QUFDbEUsTUFBTSxnQkFBZ0IsR0FBd0MsRUFBRSxDQUFDO0FBRWpFLG9IQUFvSDtBQUNwSCxNQUFNLDZCQUE2QixHQUFHLEdBQUcsRUFBRTtJQUN6QyxnREFBZ0Q7SUFDaEQsT0FBTyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLFVBQVUsT0FBZTtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsaUNBQWlDO0FBQ2pDLHlEQUF5RDtBQUN6RCxNQUFNLGNBQWMsR0FBRyxVQUFVLE9BQWU7SUFDOUMsSUFBSSxPQUFPLEtBQUssWUFBWTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRixNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLDJDQUEyQztBQUMzQyxNQUFNLGdCQUFnQixHQUFHLFVBQXFCLFdBQW1CLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDMUYsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUMzQyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLDZCQUE2QixFQUFFLENBQUMsQ0FBQztJQUVwRSxrRUFBa0U7SUFDbEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUVuRSxtQkFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtRQUNyQyxJQUFJLEVBQUUsR0FBRyxXQUFXLEtBQUssT0FBTyxHQUFHO1FBQ25DLDhFQUE4RTtRQUM5RSx5Q0FBeUM7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sbUJBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLE9BQXNDLEVBQUUsV0FBbUI7SUFDL0YsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRTtRQUNuQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkQ7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxVQUFxQixHQUFXLEVBQUUsSUFBWTtJQUNsRSxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsR0FBa0M7SUFDbkUsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUMvQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkM7QUFDSCxDQUFDLENBQUM7QUFFRix3QkFBd0I7QUFDeEIsMERBQTBEO0FBQzFELE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxXQUFtQixFQUFFLE1BQThCO0lBQ3ZGLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFBRSxPQUFPO0lBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFBRSxPQUFPO0lBRWpELElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtRQUNiLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLEVBQUU7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN0QzthQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxjQUFjLEVBQUU7WUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNyRDtLQUNGO0lBRUQsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGdCQUFnQixFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDckQ7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLHVEQUF1RDtBQUN2RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsVUFDcEQsS0FBcUIsRUFDckIsV0FBbUIsRUFDbkIsR0FBVyxFQUNYLElBQVk7SUFFWixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFzQyxFQUFFLEVBQUU7SUFDMUQsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUU7UUFDM0IsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3hCLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDekMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNoRDtTQUNGO0tBQ0Y7QUFDSCxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0SEYsTUFBYSxLQUFLO0lBQWxCO1FBQ1UsY0FBUyxHQUFlLEVBQUU7SUFrQnBDLENBQUM7SUFoQkMsV0FBVyxDQUFFLFFBQWtCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUUsUUFBa0I7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBRSxHQUFHLElBQVc7UUFDbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztDQUNGO0FBbkJELHNCQW1CQzs7Ozs7Ozs7Ozs7Ozs7QUNuQkQsMkNBQTJDO0FBQzNDLGlFQUFpRTtBQUNqRSxFQUFFO0FBQ0YsMENBQTBDO0FBQzFDLG1FQUFtRTs7QUFFbkUsNkpBQTRGO0FBTzVGLE1BQU0sV0FBVyxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO0lBQzFDLElBQUk7UUFDRixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQVMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUMvQjtJQUFDLFdBQU07UUFDTixPQUFPLEVBQUUsQ0FBQztLQUNYO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUF1QixFQUFFLEVBQUU7SUFDaEYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM5QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBZSxFQUFFLFlBQXlDLEVBQUUsYUFBZ0MsRUFBRSxFQUFFO0lBQzNILElBQUksT0FBTyxhQUFhLEtBQUssUUFBUTtRQUFFLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUFFLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFFdEQsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUNqRCxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTyxHQUFHLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sNEJBQTRCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsV0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXVCLEVBQUUsRUFBRTtJQUN2RixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3hDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztLQUNsRTtBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUU7SUFDdEMsT0FBTztRQUNMLFVBQVUsQ0FBRSxXQUFtQixFQUFFLGFBQXVCO1lBQ3RELE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDN0QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQzNERiw2SkFBNEY7QUFFNUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsUUFBa0IsRUFBRSxFQUFFO0lBQ2xGLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVTtRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVoRixnQkFBZ0IsQ0FBQyxNQUFNLENBQVMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQztTQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsK0NBQStDO1lBQy9DLHdEQUF3RDtZQUN4RCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsT0FBNEIsRUFBRSxRQUFrQixFQUFFLEVBQUU7SUFDaEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUM7U0FDNUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULElBQUksUUFBUTtZQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFdBQW1CLEVBQUUsV0FBbUIsRUFBRSxFQUFFO0lBQ3JFLE9BQU87UUFDTCxHQUFHLENBQUUsSUFBYyxFQUFFLFFBQWtCO1lBQ3JDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFO2dCQUNwRSxJQUFJLElBQUksSUFBSSxJQUFJO29CQUFFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLFFBQVEsR0FBd0IsRUFBRSxDQUFDO2dCQUN2QyxRQUFRLE9BQU8sSUFBSSxFQUFFO29CQUNuQixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2QsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ3hCLFFBQVEsR0FBRyxJQUFJLENBQUM7NEJBQ2hCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUMxQjt3QkFDRCxNQUFNO2lCQUNUO2dCQUVELCtDQUErQztnQkFDL0Msd0RBQXdEO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFBRSxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFM0MsTUFBTSxLQUFLLEdBQXdCLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pCLElBQUksS0FBSyxJQUFJLElBQUk7d0JBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEdBQUcsQ0FBRSxLQUEwQixFQUFFLFFBQWtCO1lBQ2pELFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFO2dCQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckUsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sQ0FBRSxJQUFjLEVBQUUsUUFBa0I7WUFDeEMsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUE0QixFQUFFLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssQ0FBRSxRQUFrQjtZQUN2QixVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFVyxhQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQzVDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0NBQy9DLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDckZILDhIQUFxRTtBQUVyRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBTyxDQUFDLGtHQUFtRCxDQUFDLENBQUM7QUFFN0YsTUFBTSxhQUFhO0lBSWpCO1FBSFEscUJBQWdCLEdBQUcsSUFBSSxhQUFLLEVBQUU7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLGFBQUssRUFBRTtRQUcvQixtQkFBbUIsQ0FBQyxFQUFFLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE9BQVksRUFBRSxFQUFFO1lBQ3BHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE9BQVksRUFBRSxFQUFFO1lBQy9GLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRVksYUFBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQ25CL0MsNkRBQXNDO0FBQ3RDLHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxnRkFBZ0Y7QUFDaEYsMERBQTBEO0FBQzFELEVBQUU7QUFDRiw4RUFBOEU7QUFDOUUsa0NBQWtDO0FBQ2xDLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUscUVBQXFFO0FBQ3JFLDZFQUE2RTtBQUM3RSx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLDJFQUEyRTtBQUMzRSx5RUFBeUU7QUFDekUseUVBQXlFO0FBQ3pFLE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDZix5RkFBeUY7UUFDekYsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxzRUFBc0U7SUFDdEUsc0VBQXNFO0NBQ3ZFLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsdUNBQXVDO0FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUUxQixzQkFBc0I7QUFFdEIsbUJBQU8sQ0FBQyx3RUFBOEIsQ0FBQyxDQUFDO0FBRXhDLDBCQUEwQjtBQUMxQixtQkFBTyxDQUFDLDREQUFnQyxDQUFDLENBQUM7QUFFMUMsZ0VBQWdFO0FBQ2hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxxQkFBWSxFQUFFLENBQUM7QUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUM5QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDakQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFFbEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0lBQ3pDLFNBQVMsQ0FBRSxRQUFpQixFQUFFLE9BQWUsRUFBRSxJQUFXLEVBQUUsUUFBZ0I7UUFDMUUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILGlEQUFpRDtBQUNqRCxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBTyxDQUFDLGtHQUFtRCxDQUFDLENBQUM7QUFDN0YsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBTyxDQUFDLDhHQUF5RCxDQUFDLENBQUM7QUFDNUYsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLG1CQUFPLENBQUMsb0ZBQTRDLENBQUMsQ0FBQztBQUMvRSxZQUFZLEVBQUUsQ0FBQztBQUVmLGtDQUFrQztBQUNsQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFOUUsTUFBTSxXQUFXLEdBQUcsVUFDbEIsSUFBWSxFQUFFLFlBQWUsRUFBRSxTQUFnQztJQUUvRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQ0EsU0FBUztZQUNQLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQ3pCO1FBQ0QsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM1QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUU3RCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBYSxDQUFDO0FBQzVHLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFMUUsZ0RBQWdEO0FBQ2hELE1BQU0saUJBQWlCLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0FBRWpILDhFQUE4RTtBQUM5RSxJQUFJLGFBQWEsRUFBRTtJQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0NBQ3BDO0FBRUQsUUFBUSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ2hCLGdDQUFnQztRQUNoQyxtQkFBTyxDQUFDLDBFQUF1QyxDQUFDLENBQUM7UUFDakQsTUFBTTtLQUNQO0lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hCLDBEQUEwRDtRQUMxRCxtQkFBTyxDQUFDLDRFQUF3QyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLE1BQU07S0FDUDtJQUNELEtBQUssU0FBUztRQUNaLE1BQU07SUFDUixPQUFPLENBQUMsQ0FBQztRQUNQLGtDQUFrQztRQUNsQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxnRkFBMEMsQ0FBQyxDQUFDO1FBQzVFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNFLDBCQUEwQjtRQUMxQixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQWtDLENBQUM7UUFDcEgsbUJBQU8sQ0FBQyx3R0FBc0QsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pGO0NBQ0Y7QUFFRCxtQ0FBbUM7QUFDbkMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO0lBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxtQkFBTyxDQUFDLG9HQUFvRCxDQUFDLENBQUM7SUFDdEYsV0FBVyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztDQUM1RDtBQUVELHVDQUF1QztBQUN2QyxJQUFJLGdCQUFnQixFQUFFO0lBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDLENBQUM7Q0FDekU7QUFFRCxJQUFJLGVBQWUsRUFBRTtJQUNuQixrQ0FBa0M7SUFDbEMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBdUIsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFDLHNCQUFzQjtJQUM5RyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsdUVBQXVFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUVqQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ2hDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7Z0JBQUUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkQsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsSUFBSSx5QkFBeUIsRUFBRTtnQkFDN0IsUUFBUSxHQUFHLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQzthQUM3QztTQUNGO1FBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRCxrRUFBa0U7UUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUUzQyw4Q0FBOEM7UUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqRTtTQUFNO1FBQ0wsMkRBQTJEO1FBQzNELE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0YsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpGLElBQUksT0FBTyxFQUFFO1lBQ1gsNENBQTRDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4RDtLQUNGO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSztRQUNwRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELCtEQUErRDtZQUMvRCxrRUFBa0U7WUFDbEUsWUFBWTtZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUEwQixFQUFFLEtBQVksQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUM7Q0FDSDtLQUFNO0lBQ0wsbUVBQW1FO0lBQ25FLG1DQUFtQztJQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0IsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0tBQ0o7Q0FDRjtBQUVELE1BQU0sVUFBVSxHQUFHLG1CQUFPLENBQUMsMEVBQXVDLENBQUMsQ0FBQztBQUVwRSw0QkFBNEI7QUFDNUIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7SUFDMUMsSUFBSTtRQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDN0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN4RztDQUNGO0FBRUQsNkJBQTZCO0FBQzdCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtJQUN2QixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxtQkFBTyxDQUFDLDBGQUErQyxDQUFDLENBQUM7SUFDdEYsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDbkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0TkQsMEtBQTZGO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLEdBQUc7SUFDZCxxQ0FBcUM7SUFDckMsTUFBTSxDQUFDLHFCQUFzQixDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztJQUVsRSwwREFBMEQ7SUFDMUQsTUFBTSxDQUFDLFdBQVksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBRXpFLGtEQUFrRDtJQUNsRCxNQUFNLENBQUMsRUFBRyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLGtFQUFrRTtBQUNsRSxTQUFTLFdBQVcsQ0FBRSxPQUFlLEVBQUUsSUFBWTtJQUNqRCxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELCtEQUErRDtBQUM5RCxNQUFNLENBQUMsT0FBZSxHQUFHLFVBQVUsT0FBZSxFQUFFLEtBQWE7SUFDaEUsT0FBTyx3Q0FBVSxDQUFDLDRCQUE0QixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQVksQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUF3QjtJQUMvRSxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztRQUNsRixPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTztZQUNqQyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7WUFDOUIsT0FBdUIsQ0FBQyxpQkFBaUIsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUF3QjtJQUN6RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELG9DQUFNLENBQVMsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM3RSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUMxQixNQUFNLENBQUMsV0FBWSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsTUFBTSxDQUFDLFdBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLFFBQThCO0lBQ3BFLG9DQUFNLENBQWtCLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUM5RSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDaEIsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLFVBQVUsSUFBWSxFQUFFLElBQVM7SUFDN0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsVUFBcUIsUUFBb0I7SUFDekUsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzNDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUMzREYsd0pBQXdGO0FBQ3hGLG1IQUFvRTtBQUl2RCxjQUFNLEdBQUcsVUFBaUMsT0FBZSxFQUFFLE9BQVU7SUFDaEYsMkNBQW1CLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtRQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDdEQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxhQUFhLFNBQVMsRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmLFNBQWdCLE1BQU0sQ0FBSyxPQUFlLEVBQUUsR0FBRyxJQUFXO0lBQ3hELE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsRUFBRSxNQUFNLENBQUM7UUFDM0IsMkNBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxhQUFhLFNBQVMsRUFBRSxFQUFFLENBQzNELE1BQU0sRUFBRSxLQUErQixFQUFFLE1BQVcsRUFDcEQsRUFBRTtZQUNGLElBQUksS0FBSyxFQUFFO2dCQUNULE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWRELHdCQWNDO0FBRUQsU0FBZ0IsVUFBVSxDQUFLLE9BQWUsRUFBRSxHQUFHLElBQVc7SUFDNUQsTUFBTSxDQUFFLEtBQUssRUFBRSxNQUFNLENBQUUsR0FBRywyQ0FBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRS9FLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO1NBQU07UUFDTCxPQUFPLE1BQU0sQ0FBQztLQUNmO0FBQ0gsQ0FBQztBQVJELGdDQVFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDNUNELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxzQkFBc0I7QUFDVCwyQkFBbUIsR0FBaUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDL0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRXRCLDJCQUFtQixDQUFDLElBQUksR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDbkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLFFBQVEsR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDdkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLE1BQU0sR0FBRyxVQUFVLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3BFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLFNBQVMsR0FBRyxVQUFVLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCRixpR0FBb0M7QUFDcEMsMEtBQWlGO0FBRWpGLElBQUksU0FBUyxHQUFtQixJQUFJLENBQUM7QUFFckMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRTVDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtRQUN0QixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssUUFBUTtZQUNYLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuQyxRQUFRLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDbkUsTUFBTTtRQUNSLEtBQUssU0FBUyxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0MsTUFBTTtRQUNSLEtBQUssT0FBTztZQUNWLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEQsTUFBTTtRQUNSO1lBQ0UsU0FBUyxHQUFHLEtBQUssQ0FBQztLQUNyQjtJQUVELElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGtDQUFrQyxDQUFDO1FBQy9DLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFO1FBQ3pELFNBQVMsR0FBRyxLQUFLLENBQUM7S0FDbkI7SUFFRCxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztRQUM5QyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsaUNBQWlDLENBQUMsRUFBRTtRQUN4RCxTQUFTLEdBQUcsSUFBSSxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixPQUFPLG1CQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxJQUFJO1lBQ0YsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7U0FDNUQ7UUFBQyxXQUFNO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRzs7MEJBRUUsQ0FBQztBQUUzQjs7Ozs7R0FLRztBQUNILE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO1FBQzFFLE9BQU87S0FDUjtJQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXO1NBQ2pDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztTQUM1QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZELE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUM7U0FDNUQsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZCxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3hDLE9BQU87S0FDUjtJQUVELE1BQU0sT0FBTyxHQUFHOzttRUFFaUQsU0FBUztNQUN0RSxlQUFlLEVBQUUsQ0FBQztJQUV0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxFQUM3RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sOEJBQThCLEdBQUcsVUFBVSxlQUF3QjtJQUN2RSxJQUFJLENBQUMsZUFBZSxJQUFJLFdBQVcsRUFBRTtRQUFFLE9BQU87SUFFOUMsSUFBSSxtQkFBbUIsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sT0FBTyxHQUFHO2lEQUM2QixNQUFNLENBQUMsUUFBUTsyREFDTCxlQUFlLEVBQUUsQ0FBQztRQUV6RSxPQUFPLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxFQUNsRixvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSw2RUFBNkU7QUFDN0UsRUFBRTtBQUNGLGtGQUFrRjtBQUNsRixzRkFBc0Y7QUFFdEY7Ozs7R0FJRztBQUNILE1BQU0sNEJBQTRCLEdBQUcsVUFBVSxjQUF3QztJQUNyRixJQUFJLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEtBQUssS0FBSztRQUFFLE9BQU87SUFFcEUsTUFBTSxPQUFPLEdBQUc7eURBQ3VDLGVBQWUsRUFBRSxDQUFDO0lBRXpFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQy9ELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixNQUFNLE9BQU8sR0FBRzs7K0NBRTJCLGVBQWUsRUFBRSxDQUFDO1FBRTdELE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEVBQzNFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sK0JBQStCLEdBQUcsVUFBVSxjQUF3QztJQUN4RixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLDJCQUEyQjtRQUFFLE9BQU87SUFFM0UsTUFBTSxPQUFPLEdBQUc7O0lBRWQsZUFBZSxFQUFFLENBQUM7SUFFcEIsT0FBTyxDQUFDLElBQUksQ0FBQywyREFBMkQsRUFDdEUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsVUFBVSxjQUF3QztJQUN0RixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsRUFBRTtRQUM3RCxPQUFPO0tBQ1I7SUFFRCxNQUFNLE9BQU8sR0FBRzs7MENBRXdCLGVBQWUsRUFBRSxDQUFDO0lBRTFELE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQy9ELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLDRCQUE0QixHQUFHLFVBQVUsY0FBd0M7SUFDckYsSUFBSSxDQUFDLGNBQWM7UUFDakIsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDO1FBQ3JELENBQUMsY0FBYyxDQUFDLG1CQUFtQixJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDekYsT0FBTztLQUNSO0lBRUQsTUFBTSxPQUFPLEdBQUc7OytDQUU2QixlQUFlLEVBQUUsQ0FBQztJQUUvRCxPQUFPLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxFQUM5RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUMsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUc7OztNQUdkLGVBQWUsRUFBRSxDQUFDO1FBRXBCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQ3RELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLCtDQUErQztBQUMvQyxvQ0FBb0M7QUFDcEMsaURBQWlEO0FBQ2pELHlEQUF5RDtBQUV6RCxvREFBb0Q7QUFDcEQsaURBQWlEO0FBRWpELE1BQU0sc0NBQXNDLEdBQUcsVUFBVSxjQUF3QztJQUMvRixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsRUFBRTtRQUFFLE9BQU87SUFFbkYsSUFBSSxtQkFBbUIsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sT0FBTyxHQUFHO2lEQUM2QixNQUFNLENBQUMsUUFBUTtnRUFDQSxlQUFlLEVBQUUsQ0FBQztRQUU5RSxPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxFQUM3RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxtQ0FBbUM7QUFFbkMsTUFBTSxtQkFBbUIsR0FBRyxVQUMxQixjQUFtRCxFQUFFLGVBQXdCO0lBRTdFLDhCQUE4QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLDBCQUEwQixFQUFFLENBQUM7SUFDN0IsK0JBQStCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsNkJBQTZCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0Msb0JBQW9CLEVBQUUsQ0FBQztJQUN2QixzQkFBc0IsRUFBRSxDQUFDO0lBQ3pCLHNDQUFzQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSztJQUM3QixJQUFJO1FBQ0YsT0FBTyxvQ0FBTSxDQUEwQiwyQ0FBMkMsQ0FBQyxDQUFDO0tBQ3JGO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzFEO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsZ0JBQWdCLENBQUUsZUFBd0I7SUFDeEQsTUFBTSxXQUFXLEdBQUcsS0FBSztRQUN2QixJQUFJLHlCQUF5QixFQUFFLEVBQUU7WUFDL0IsTUFBTSxjQUFjLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELG1CQUFtQixDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQVJELDRDQVFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDM1RELGlHQUE4QztBQUM5Qyw2SkFBNEY7QUFRL0Usb0JBQVksR0FBRyxHQUFHLEVBQUU7SUFDL0IsdUJBQXVCO0lBQ3ZCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw2Q0FBNkMsRUFBRSxDQUNyRSxLQUFLLEVBQUUsTUFBNEIsRUFBRSxHQUFHLElBQVcsRUFDbkQsRUFBRTtRQUNGLDREQUE0RDtRQUM1RCxrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELE9BQVEsbUJBQVEsQ0FBQyxNQUFNLENBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNuQkYsaUdBQXFEO0FBQ3JELHdKQUF3RjtBQUN4RiwwS0FBNkY7QUFJN0YsTUFBTSxlQUFlLEdBQWtDO0lBQ3JELGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7SUFDckMsWUFBWSxFQUFFLEVBQUU7SUFDaEIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixlQUFlLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNySCx1QkFBdUIsRUFBRSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUM1RSxtQkFBbUIsRUFBRSxFQUFFO0lBQ3ZCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsV0FBVyxFQUFFLEVBQUU7SUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUMzRCxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDMUIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDO0lBQzVELGVBQWUsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QixzQkFBc0IsRUFBRSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQy9GLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUM3RCxvQkFBb0IsRUFBRSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEgsc0JBQXNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQ2xGLGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQztJQUM1QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFNBQVMsRUFBRSxFQUFFO0lBQ2IsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO0lBQ3JDLFdBQVcsRUFBRSxFQUFFO0lBQ2Ysb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQzlDLHNCQUFzQixFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3BDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsd0JBQXdCLEVBQUUsRUFBRTtJQUM1Qix1QkFBdUIsRUFBRSxFQUFFO0lBQzNCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUMzQix3QkFBd0IsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUN4QyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssQ0FBQztDQUM3QixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBMkI7SUFDaEQsb0JBQW9CLEVBQUUsZ0JBQWdCO0NBQ3ZDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxVQUNwQixPQUFvQixFQUFFLFNBQWlCLEVBQUUsUUFBZ0IsRUFBRSxHQUFHLElBQWdCO0lBRTlFLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3hDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDekU7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQWtDLENBQUM7SUFDdkUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMvQyxRQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEMsSUFBSSxTQUFTLEtBQUssYUFBYSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDaEM7U0FBTSxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7UUFDdkMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQ3pCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsY0FBYyxDQUFFLE9BQW9CLEVBQUUsY0FBc0I7SUFDMUUsMkNBQW1CLENBQUMsRUFBRSxDQUFDLDhDQUE4QyxjQUFjLEVBQUUsRUFBRTtRQUNyRixPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztRQUNwQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQywrQ0FBK0MsY0FBYyxFQUFFLEVBQUUsVUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSTtRQUN6SCxhQUFhLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQyw0Q0FBNEMsY0FBYyxFQUFFLEVBQUUsVUFBVSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNwSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQW9CLENBQUM7UUFDN0QsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDM0IsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0NBbUJDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUUsY0FBc0I7SUFDdEQsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsOENBQThDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkcsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsK0NBQStDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDeEcsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsNENBQTRDLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDdkcsQ0FBQztBQUpELDRDQUlDO0FBRUQsU0FBZ0IsV0FBVyxDQUFFLE1BQTJCO0lBQ3RELE9BQU8sb0NBQU0sQ0FBQywwQ0FBMEMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixlQUFlLENBQUUsTUFBMkI7SUFDMUQsT0FBTyx3Q0FBVSxDQUFDLDBDQUEwQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFGRCwwQ0FFQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsaUJBQXlCLEVBQUUsZUFBdUIsRUFBRSxNQUEyQixFQUFFLGFBQXFCO0lBRXRHLE1BQU0sZUFBZSxHQUFJLG1CQUE4QyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRyxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxnQ0FBZ0M7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzNDO0lBQ0Qsb0NBQU0sQ0FBQywwQ0FBMEMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xILENBQUM7QUFSRCxrQ0FRQztBQUVZLCtCQUF1QixHQUFHO0lBQ3JDLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZUFBZTtJQUNmLFdBQVc7Q0FDWixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNySEYsNkpBQTRGO0FBQzVGLGtKQUFpRjtBQUdqRixtREFBbUQ7QUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQW1CO0lBQzlDLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBTUYscUJBQXFCO0FBQ3JCLGlEQUFpRDtBQUNqRCxNQUFNLGdCQUFnQjtJQUlwQixZQUFvQixJQUFZLEVBQVMsV0FBd0I7UUFBN0MsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjFELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBdUM5Qiw2Q0FBNkM7UUFDdEMsbUJBQWMsR0FBc0MsR0FBRyxFQUFFLENBQUMsU0FBZ0I7UUFyQy9FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUksV0FBVyxDQUFDLFdBQW1DLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM1RSxDQUFDO0lBRUQsOEJBQThCO0lBQ3ZCLFFBQVEsQ0FBRSxLQUFVO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQseUVBQXlFO0lBQ2xFLHNCQUFzQixDQUFFLEtBQVU7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsNERBQTREO0lBQ3JELGNBQWM7UUFDbkIsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEUsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBSUY7QUFFRCw2Q0FBNkM7QUFDN0MsTUFBTSxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFDN0MsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7Q0FDRjtBQUVELDZEQUE2RDtBQUM3RCxNQUFNLGtCQUFtQixTQUFRLGdCQUFnQjtJQUcvQyxZQUFvQixXQUF3QjtRQUMxQyxLQUFLLHdDQUF5QyxXQUFXLENBQUMsQ0FBQztRQUR6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUZyQyxxQkFBZ0IsR0FBRyxJQUFJO1FBTXZCLG1CQUFjLEdBQUcsQ0FBQyxRQUFhLEVBQUUsUUFBYSxFQUFFLEVBQUU7WUFDdkQsUUFBUSxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFFMUIsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFO2dCQUMzQyxPQUFPLENBQUMsS0FBSywyR0FBZ0QsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPO2FBQ1I7WUFDRCxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxLQUFLLDRFQUEwRCxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQztJQWZELENBQUM7Q0FnQkY7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxZQUFhLFNBQVEsZ0JBQWdCO0lBR3pDLFlBQW9CLFdBQXdCO1FBQzFDLEtBQUssNEJBQW1DLFdBQVcsQ0FBQyxDQUFDO1FBRG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdUJyQyxtQkFBYyxHQUFHLENBQUMsUUFBYSxFQUFFLFFBQWEsRUFBRSxFQUFFO1lBQ3ZELHFFQUFxRTtZQUNyRSxpRUFBaUU7WUFDakUscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO2dCQUN6QixvRUFBb0U7Z0JBQ3BFLGtFQUFrRTtnQkFDbEUsdUNBQXVDO2dCQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFqQ0MsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRU0sc0JBQXNCLENBQUUsS0FBVTtRQUN2QyxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsMkVBQTJFO1FBQzNFLHNFQUFzRTtRQUN0RSwyRUFBMkU7UUFDM0UsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQWdCRCwwRUFBMEU7SUFDMUUseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSw0QkFBNEI7SUFDckIscUJBQXFCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2pELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUNoQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDO2dCQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRTtvQkFDekIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN6QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUc7WUFDYixVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDN0IsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHVDQUF3QyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xKLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDaEM7WUFDRCxPQUFPO1NBQ1I7UUFFRCwwQkFBMEI7UUFDMUIsTUFBTSxJQUFJLEdBQTJCLEVBQUUsQ0FBQztRQUV4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsNkNBQTJDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkcsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDbEM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsdUNBQXdDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakcsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1QjtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0NBQWtDLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0Y7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFDbEQsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLDhDQUE0QyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0Y7QUFFRCxpQ0FBaUM7QUFDakMsTUFBTSxrQkFBbUIsU0FBUSxnQkFBZ0I7SUFDL0MsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLHdDQUF5QyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFDN0MsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLG9DQUF1QyxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjtRQUVELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxLQUFLLDRHQUF3RCxDQUFDO1lBQ3RFLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDZDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELDZEQUE2RDtBQUM3RCxNQUFNLHNCQUF1QixTQUFRLGdCQUFnQjtJQUNuRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssZ0RBQTZDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLDZCQUE4QixTQUFRLGdCQUFnQjtJQUMxRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssOERBQW9ELFdBQVcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLHVCQUF3QixTQUFRLGdCQUFnQjtJQUNwRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssa0RBQThDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQUVELE1BQU0sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBQ3hELFlBQWEsV0FBd0I7UUFDbkMsS0FBSywwREFBa0QsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDO0lBQzFFLENBQUM7SUFFTSxRQUFRLENBQUUsS0FBVTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBRUQseUNBQXlDO0FBQ3pDLDJCQUFXLENBQUMsU0FBUyxDQUFDLHNCQUFzQixHQUFHO0lBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksQ0FBQyxVQUFVLHVDQUF3QyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsSUFBSSxDQUFDLFVBQVUsMkJBQWtDLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLFVBQVUsNkNBQTJDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RixJQUFJLENBQUMsVUFBVSx1Q0FBd0MsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLElBQUksQ0FBQyxVQUFVLG1EQUE4QyxHQUFHLElBQUksZ0JBQWdCLG9EQUErQyxJQUFJLENBQUMsQ0FBQztJQUN6SSxJQUFJLENBQUMsVUFBVSx5RUFBeUQsR0FBRyxJQUFJLGdCQUFnQiwwRUFBMEQsSUFBSSxDQUFDLENBQUM7SUFDL0osSUFBSSxDQUFDLFVBQVUsbUNBQXNDLEdBQUcsSUFBSSxnQkFBZ0Isb0NBQXVDLElBQUksQ0FBQyxDQUFDO0lBQ3pILElBQUksQ0FBQyxVQUFVLHlEQUFpRCxHQUFHLElBQUksZ0JBQWdCLDBEQUFrRCxJQUFJLENBQUMsQ0FBQztJQUMvSSxJQUFJLENBQUMsVUFBVSwyQ0FBMEMsR0FBRyxJQUFJLGdCQUFnQiw0Q0FBMkMsSUFBSSxDQUFDLENBQUM7SUFDakksSUFBSSxDQUFDLFVBQVUseURBQWlELEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RyxJQUFJLENBQUMsVUFBVSxtQ0FBc0MsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLElBQUksQ0FBQyxVQUFVLCtDQUE0QyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0YsSUFBSSxDQUFDLFVBQVUsNkRBQW1ELEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsVUFBVSxpREFBNkMsR0FBRyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25HLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUNuU0YsMEVBQTBFO0FBQzFFLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw0RUFBNEU7O0FBSzVFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBNEIsRUFBRSxXQUFxQyxFQUFFLEVBQUU7SUFDbkcsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUN2RCxPQUFPLE1BQU0sY0FBZSxTQUFRLFdBQVc7UUFHN0MsTUFBTSxLQUFLLGtCQUFrQjtZQUMzQixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7YUFlTixDQUFDO1FBQ0osQ0FBQztRQUVEO1lBQ0UsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsaUJBQWlCO1lBQ2YsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBZSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtnQkFDN0IsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BFLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsVUFBVSwyQkFBa0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvRDtRQUNILENBQUM7UUFFRCx3QkFBd0IsQ0FBRSxJQUFZLEVBQUUsUUFBYSxFQUFFLFFBQWE7WUFDbEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBZSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbkU7UUFDSCxDQUFDO1FBRUQsb0JBQW9CO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQWUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTzthQUNSO1lBQ0QsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVELFFBQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFDNUIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYscUNBQXFDO0FBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLFdBQXFDLEVBQUUsRUFBRTtJQUNyRyw0Q0FBNEM7SUFDNUMsMkJBQTJCO0lBQzNCLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQXNEO0lBRXJILFdBQVcsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFekMsaUVBQWlFO0lBQ2pFLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUE2QyxDQUFDO0lBQzNFLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFjLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUV6Qyw2RUFBNkU7UUFDN0UsWUFBWTtRQUNaLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7UUFDckQsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDO1FBRXpELHdFQUF3RTtRQUN4RSxxQkFBcUI7UUFDckIsb0VBQW9FO1FBQ3BFLE9BQVEsY0FBc0IsQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLDZDQUE2QztBQUNoQyxvQkFBWSxHQUFHLENBQUMsTUFBNEIsRUFBRSxXQUFxQyxFQUFFLEVBQUU7SUFDbEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPO1NBQ1I7UUFFRCxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUIsc0JBQXNCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDckhGLGlHQUE0QztBQUU1Qyw2SkFBNEY7QUFDNUYsZ0tBQThGO0FBRTlGLHFJQUFtRztBQUNuRyxtSEFBbUU7QUFFbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxnQkFBZ0I7QUFDaEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWYsTUFBTSxTQUFTLEdBQUc7SUFDaEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBYSxXQUFXO0lBa0J0QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpCckMsMEJBQXFCLEdBQUcsSUFBSTtRQUM1QixvQkFBZSxHQUFHLEtBQUs7UUFFdkIsYUFBUSxHQUFHLEtBQUs7UUFNdkIsc0JBQXNCO1FBQ2YsT0FBRSxHQUF3QixFQUFFO1FBR25DLGtDQUFrQztRQUMzQixlQUFVLEdBQXdCLEVBQUU7UUFJekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRSxVQUFVLENBQUMsU0FBUyxHQUFHLHdFQUF3RSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDbEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFN0MsbUNBQW1DO1FBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDdkQsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1lBQzVDLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBbEJNLHNCQUFzQixLQUFXLENBQUM7SUFvQnpDLHFCQUFxQjtRQUNuQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN0QyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLEtBQUs7UUFDSCx5RUFBeUU7UUFDekUsOEVBQThFO1FBQzlFLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsOEVBQThFO1FBQzlFLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsdUNBQXdDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRWhGLHVFQUF1RTtRQUN2RSxvRUFBb0U7UUFDcEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUVoQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSwwRUFBMEU7SUFDMUUsV0FBVztJQUNYLDhCQUE4QixDQUFFLGFBQXFCLEVBQUUsUUFBYSxFQUFFLFFBQWE7UUFDakYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLEVBQUU7WUFDcEYsT0FBTztTQUNSO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBeUMsQ0FBQztRQUNoRixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsYUFBYSxDQUFFLFlBQTRCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsb0JBQW9CO0lBQ3BCLGtCQUFrQixDQUFFLFNBQWlCO1FBQ25DLE1BQU0sWUFBWSxHQUFHLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFO1lBQzNELEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztpQkFDeEU7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksS0FBSyxFQUFFO29CQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQztZQUNELFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsWUFBWSxDQUFFLFlBQTJDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSwyQkFBa0MsQ0FBQztRQUNqRixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksWUFBWSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsRUFBRTtZQUN2RCw2REFBNkQ7WUFDN0QsZ0VBQWdFO1lBQ2hFLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsVUFBVSwyQkFBa0MsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRjtJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsYUFBYTtRQUNYLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM3RCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFFLGtCQUEwQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLHVDQUF3QyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQXdCO1lBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYztZQUMvQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1NBQzFDLENBQUM7UUFFRixLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkU7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxlQUF1QjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixxRUFBcUU7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXZDLGlCQUFpQixDQUFDLFdBQVcsQ0FDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYyxDQUNwQyxDQUFDO1FBRUYsbUVBQW1FO1FBQ25FLDRCQUE0QjtRQUM1Qix3RUFBd0U7UUFDeEUsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBOUxELGtDQThMQztBQUVZLHVCQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLG1CQUFPLENBQUMsZ0hBQTBELENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRiw0Q0FBNEM7QUFDNUMsMkJBQTJCO0FBQ2Qsb0JBQVksR0FBRyxDQUFDLGNBQXNELEVBQUUsRUFBRTtJQUNyRixjQUFjLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHO1FBQzFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQWMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkdBQTJHLENBQUMsQ0FBQztTQUM5SDtRQUNELE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRiw0Q0FBNEM7SUFDNUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUc7UUFDeEMsSUFBSSxDQUFDLGlCQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFjLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUM3QixRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDNUI7UUFFRCxPQUFRLGlCQUFrQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFnQixDQUFDLENBQUM7SUFDNUYsQ0FBQyxDQUFDO0lBRUYsd0VBQXdFO0lBQ3hFLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxNQUFjO1FBQ2pELE9BQU8sVUFBaUQsR0FBRyxJQUFnQjtZQUN6RSxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSw4QkFBVyxFQUFFO1FBQy9CLGNBQWMsQ0FBQyxTQUFpQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hGO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLE1BQWM7UUFDcEQsT0FBTyxVQUFpRCxHQUFHLElBQWdCO1lBQ3pFLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLCtCQUFZLEVBQUU7UUFDaEMsY0FBYyxDQUFDLFNBQWlDLENBQUMsTUFBTSxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0Y7SUFFRCxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLFdBQVcsR0FBRyxJQUFJO1FBQzVELE9BQU8sd0JBQVcsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLE1BQU0sQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ILENBQUMsQ0FBQztJQUVGLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxRQUFnQjtRQUNyRCxPQUFPO1lBQ0wsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsMENBQTBDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLFFBQWdCO1FBQ3JELE9BQU8sVUFBaUQsR0FBUTtZQUM5RCxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLFFBQVEsSUFBSSw2QkFBVSxFQUFFO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7WUFDeEQsR0FBRyxFQUFFLG9CQUFvQixDQUFDLFFBQVEsQ0FBUTtZQUMxQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDO0FBRVcseUJBQWlCLEdBQUc7SUFDL0IsZUFBZSxFQUFmLHVCQUFlO0lBQ2YsWUFBWSxFQUFaLG9CQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLFFBQVEsRUFBUixtQkFBUTtJQUNSLFdBQVc7Q0FDWixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDdFNGLHdKQUF3RjtBQUV4RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxELFNBQVMsZUFBZSxDQUFFLGVBQXVCO0lBQy9DLDJFQUEyRTtJQUMzRSx5Q0FBeUM7SUFFekMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDcEMsMkNBQW1CLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM5RixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ25DLDJDQUFtQixDQUFDLElBQUksQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUN6QixnQkFBeUIsRUFBRSxVQUEyQyxFQUFFLGVBQXVCO0lBRS9GLHFDQUFxQztJQUNyQyxJQUFJLFVBQVUsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLG1CQUFPLENBQUMsb0dBQW9ELENBQUMsQ0FBQztRQUM1RixJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsbUJBQU8sQ0FBQywwR0FBdUQsQ0FBQyxDQUFDO1lBQzFGLFlBQVksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUN6QztLQUNGO0lBRUQsSUFBSSxlQUFlLEVBQUU7UUFDbkIsa0RBQWtEO1FBQ2xELGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUM7QUFsQkQsa0NBa0JDOzs7Ozs7Ozs7Ozs7Ozs7QUNuQ0QsMEVBQTBFO0FBQzFFLG1FQUFtRTtBQUNuRSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLHFFQUFxRTtBQUNyRSxtREFBbUQ7O0FBRW5ELDBFQUEwRTtBQUMxRSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFXLElBQUksTUFBYSxDQUFDLENBQUMsTUFBdUIsQ0FBQztBQUtyRSwwQkFBTztBQUpULE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFLOUIsMEJBQU87QUFKVCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBSzVCLHdCQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQlIsd0pBQXdGO0FBQ3hGLDZKQUE0RjtBQUU1RiwyQ0FBMkM7QUFDM0MsMEJBQTBCO0FBQzFCLDZCQUE2QjtBQUM3Qix3QkFBd0I7QUFDeEIsMEJBQTBCO0FBQzFCLGtCQUFrQjtBQUNsQix5QkFBeUI7QUFDekIsMEJBQTBCO0FBQzFCLHlCQUF5QjtBQUN6QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDBCQUEwQjtBQUMxQixnQ0FBZ0M7QUFDaEMsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQiw2QkFBNkI7QUFFN0IsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztBQUUxRSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLDJEQUEyRDtBQUMzRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQzlCLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUF1QyxFQUFFLENBQUM7QUFFN0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzNDLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDakIsS0FBSyxHQUFHLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNoQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtJQUN0QyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFJRixNQUFNLGFBQWE7SUFxQ2pCLFlBQWEsT0FBZTtRQUMxQixpREFBaUQ7UUFDakQsNERBQTREO1FBQzVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUE5QkQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLGFBQWEsQ0FBSyxNQUFxQixFQUFFLFdBQStCO1FBQ3JGLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN6QyxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzFDLENBQUM7WUFDRCxHQUFHLEVBQUUsVUFBK0IsTUFBUztnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLFFBQVEsRUFBRTtvQkFDWiwrREFBK0Q7b0JBQy9ELG9EQUFvRDtvQkFDbkQsUUFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUM7b0JBRXhDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDdEU7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBVyxDQUFDO1FBQ3hFLElBQUk7WUFDRixPQUFPLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHdCQUF3QixDQUFFLE1BQWMsRUFBRSxHQUFHLElBQVc7UUFDOUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsbURBQW1ELEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU8sNEJBQTRCLENBQUUsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUNsRSxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxtREFBbUQsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pILENBQUM7Q0FDRjtBQWxFOEI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7MkNBQXNCO0FBQ3JCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOzJDQUFzQjtBQUNyQjtJQUE1QixhQUFhLENBQUMsYUFBYTsyQ0FBc0I7QUFDckI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7K0NBQTBCO0FBQ3pCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOzZDQUF3QjtBQUN2QjtJQUE1QixhQUFhLENBQUMsYUFBYTsrQ0FBMEI7QUFDekI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7MkNBQXNCO0FBQ3JCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOytDQUEwQjtBQUN6QjtJQUE1QixhQUFhLENBQUMsYUFBYTs2Q0FBaUM7QUE0RC9ELE1BQU0sa0JBQWtCO0lBaUJ0QixZQUFhLE9BQWU7UUFoQnJCLFdBQU0sR0FBWSxLQUFLO1FBaUI1QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLDJDQUFtQixDQUFDLElBQUksQ0FBQywrQ0FBK0MsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQ3RGLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFuQkQsbUVBQW1FO0lBQ25FLDhEQUE4RDtJQUM5RCxzREFBc0Q7SUFDdEQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUUsR0FBaUI7UUFDcEMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFZTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxXQUFXLENBQUUsT0FBWSxFQUFFLFlBQW9CO1FBQ3BELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxrREFBa0QsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNySixDQUFDO0lBRU0sSUFBSSxDQUFFLElBQVk7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxtQkFBbUIsQ0FBRSxNQUFjLEVBQUUsR0FBRyxJQUFXO1FBQ3pELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDZDQUE2QyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVPLHdCQUF3QixDQUFFLE1BQWMsRUFBRSxHQUFHLElBQVc7UUFDOUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsbURBQW1ELEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNySCxDQUFDO0NBQ0Y7QUFFWSxtQkFBVyxHQUFHLENBQ3pCLGVBQXVCLEVBQUUsUUFBZ0IsRUFBRSxZQUFxQixFQUFFLG9CQUE2QixFQUMvRixFQUFFO0lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtRQUNqRCxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEtBQUssR0FBRztZQUNiLDJDQUFtQixDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztLQUNIO0lBRUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1FBQ3pCLGlFQUFpRTtRQUNoRSxNQUFjLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBWSxFQUFFLFNBQWtCLEVBQUUsUUFBaUI7WUFDbEYsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QztZQUNELE1BQU0sT0FBTyxHQUFHLDJDQUFtQixDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hJLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7UUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1QztJQUVELGtDQUFrQztJQUNsQyxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1FBQzdDLDJDQUFtQixDQUFDLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxVQUMxRCxNQUFNLEVBQUUsUUFBZ0IsRUFBRSxPQUFZLEVBQUUsWUFBb0I7WUFFNUQsK0VBQStFO1lBQy9FLG9CQUFvQjtZQUNwQixFQUFFO1lBQ0YsMERBQTBEO1lBQzFELGdFQUFnRTtZQUNoRSwyQkFBMkI7WUFDM0IsTUFBTSxLQUFLLEdBQVEsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFekMsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDckIsS0FBSyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7WUFDNUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUxQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQXFCLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUc7WUFDcEIsMkNBQW1CLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUc7WUFDdkIsMkNBQW1CLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsVUFBVSxNQUFjO1lBQzFDLDJDQUFtQixDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDOUMsR0FBRyxFQUFFO2dCQUNILE9BQU8sMkNBQW1CLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDL0UsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1FBQzNCLDJFQUEyRTtRQUMzRSx3RUFBd0U7UUFDeEUsMkJBQTJCO1FBQzNCLEVBQUU7UUFDRixxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHVEQUF1RDtRQUN2RCxJQUFJLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEUsd0NBQXdDO1FBQ3hDLDJDQUFtQixDQUFDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxVQUFVLE1BQU0sRUFBRSxlQUFnQztZQUNwSCxJQUFJLHFCQUFxQixLQUFLLGVBQWUsRUFBRTtnQkFDN0MscUJBQXFCLEdBQUcsZUFBZSxDQUFDO2dCQUN4QyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsOEVBQThFO1FBQzlFLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/api/clipboard.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/api/clipboard.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100720,"message":"SourceMap: mapping webpack:///lib/common/api/deprecate.ts => /Users/roblou/code/vscode/lib/common/api/deprecate.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100721,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/api/deprecate.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/api/deprecate.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/api/deprecate.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100722,"message":"SourceMap: mapping webpack:///lib/common/api/exports/electron.js => /Users/roblou/code/vscode/lib/common/api/exports/electron.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100722,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/api/exports/electron.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/api/exports/electron.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/api/exports/electron.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100723,"message":"SourceMap: mapping webpack:///lib/common/api/module-list.js => /Users/roblou/code/vscode/lib/common/api/module-list.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100724,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/api/module-list.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/api/module-list.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/api/module-list.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100725,"message":"SourceMap: mapping webpack:///lib/common/api/native-image.js => /Users/roblou/code/vscode/lib/common/api/native-image.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100725,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/api/native-image.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/api/native-image.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/api/native-image.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100726,"message":"SourceMap: mapping webpack:///lib/common/api/shell.js => /Users/roblou/code/vscode/lib/common/api/shell.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100726,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/api/shell.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/api/shell.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/api/shell.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100727,"message":"SourceMap: mapping webpack:///lib/common/buffer-utils.ts => /Users/roblou/code/vscode/lib/common/buffer-utils.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100727,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/buffer-utils.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/buffer-utils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/buffer-utils.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100729,"message":"SourceMap: mapping webpack:///lib/common/crash-reporter.js => /Users/roblou/code/vscode/lib/common/crash-reporter.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100729,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/crash-reporter.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/crash-reporter.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/crash-reporter.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100731,"message":"SourceMap: mapping webpack:///lib/common/electron-binding-setup.ts => /Users/roblou/code/vscode/lib/common/electron-binding-setup.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100731,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/electron-binding-setup.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/electron-binding-setup.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/electron-binding-setup.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100732,"message":"SourceMap: mapping webpack:///lib/common/error-utils.ts => /Users/roblou/code/vscode/lib/common/error-utils.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100732,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/error-utils.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/error-utils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/error-utils.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100733,"message":"SourceMap: mapping webpack:///lib/common/init.ts => /Users/roblou/code/vscode/lib/common/init.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100733,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/init.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/init.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/init.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100735,"message":"SourceMap: mapping webpack:///lib/common/is-promise.ts => /Users/roblou/code/vscode/lib/common/is-promise.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100735,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/is-promise.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/is-promise.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/is-promise.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100737,"message":"SourceMap: mapping webpack:///lib/common/reset-search-paths.ts => /Users/roblou/code/vscode/lib/common/reset-search-paths.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100737,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/reset-search-paths.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/reset-search-paths.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/reset-search-paths.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100738,"message":"SourceMap: mapping webpack:///lib/common/type-utils.ts => /Users/roblou/code/vscode/lib/common/type-utils.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100738,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/type-utils.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/type-utils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/type-utils.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100740,"message":"SourceMap: mapping webpack:///lib/common/web-view-methods.ts => /Users/roblou/code/vscode/lib/common/web-view-methods.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100740,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/web-view-methods.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/web-view-methods.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/web-view-methods.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100741,"message":"SourceMap: mapping webpack:///lib/common/webpack-globals-provider.ts => /Users/roblou/code/vscode/lib/common/webpack-globals-provider.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100741,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/common/webpack-globals-provider.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/common/webpack-globals-provider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/common/webpack-globals-provider.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100742,"message":"SourceMap: mapping webpack:///lib/renderer/api/context-bridge.ts => /Users/roblou/code/vscode/lib/renderer/api/context-bridge.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100742,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/context-bridge.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/context-bridge.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/context-bridge.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100743,"message":"SourceMap: mapping webpack:///lib/renderer/api/crash-reporter.js => /Users/roblou/code/vscode/lib/renderer/api/crash-reporter.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100743,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/crash-reporter.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/crash-reporter.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/crash-reporter.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100745,"message":"SourceMap: mapping webpack:///lib/renderer/api/desktop-capturer.ts => /Users/roblou/code/vscode/lib/renderer/api/desktop-capturer.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100745,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/desktop-capturer.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/desktop-capturer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/desktop-capturer.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100746,"message":"SourceMap: mapping webpack:///lib/renderer/api/exports/electron.js => /Users/roblou/code/vscode/lib/renderer/api/exports/electron.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100746,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/exports/electron.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/exports/electron.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/exports/electron.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100747,"message":"SourceMap: mapping webpack:///lib/renderer/api/ipc-renderer.js => /Users/roblou/code/vscode/lib/renderer/api/ipc-renderer.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100748,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/ipc-renderer.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/ipc-renderer.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/ipc-renderer.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100749,"message":"SourceMap: mapping webpack:///lib/renderer/api/module-list.js => /Users/roblou/code/vscode/lib/renderer/api/module-list.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100749,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/module-list.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/module-list.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/module-list.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100750,"message":"SourceMap: mapping webpack:///lib/renderer/api/remote.js => /Users/roblou/code/vscode/lib/renderer/api/remote.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100750,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/remote.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/remote.js","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/remote.js","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100751,"message":"SourceMap: mapping webpack:///lib/renderer/api/web-frame.ts => /Users/roblou/code/vscode/lib/renderer/api/web-frame.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100751,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/api/web-frame.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/api/web-frame.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/api/web-frame.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100753,"message":"SourceMap: mapping webpack:///lib/renderer/callbacks-registry.ts => /Users/roblou/code/vscode/lib/renderer/callbacks-registry.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100753,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/callbacks-registry.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/callbacks-registry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/callbacks-registry.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100754,"message":"SourceMap: mapping webpack:///lib/renderer/chrome-api.ts => /Users/roblou/code/vscode/lib/renderer/chrome-api.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100754,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/chrome-api.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/chrome-api.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/chrome-api.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100755,"message":"SourceMap: mapping webpack:///lib/renderer/content-scripts-injector.ts => /Users/roblou/code/vscode/lib/renderer/content-scripts-injector.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100756,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/content-scripts-injector.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/content-scripts-injector.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/content-scripts-injector.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100757,"message":"SourceMap: mapping webpack:///lib/renderer/extensions/event.ts => /Users/roblou/code/vscode/lib/renderer/extensions/event.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100757,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/extensions/event.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/extensions/event.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/extensions/event.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100758,"message":"SourceMap: mapping webpack:///lib/renderer/extensions/i18n.ts => /Users/roblou/code/vscode/lib/renderer/extensions/i18n.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100758,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/extensions/i18n.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/extensions/i18n.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/extensions/i18n.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100760,"message":"SourceMap: mapping webpack:///lib/renderer/extensions/storage.ts => /Users/roblou/code/vscode/lib/renderer/extensions/storage.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100760,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/extensions/storage.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/extensions/storage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/extensions/storage.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100761,"message":"SourceMap: mapping webpack:///lib/renderer/extensions/web-navigation.ts => /Users/roblou/code/vscode/lib/renderer/extensions/web-navigation.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100761,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/extensions/web-navigation.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/extensions/web-navigation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/extensions/web-navigation.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100763,"message":"SourceMap: mapping webpack:///lib/renderer/init.ts => /Users/roblou/code/vscode/lib/renderer/init.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100763,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/init.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsK0JBQStCO0FBQ25FO0FBQ0E7QUFDQSxzQkFBc0IsMENBQTBDO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9EQUFvRCxtQkFBbUI7O0FBRXZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCxpQkFBaUIseUJBQXlCO0FBQzFDLFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLGtGQUEyQztBQUNyRCxJQUFJLG1CQUFPLENBQUMsb0ZBQTRDOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDdldBLDZEQUFzQztBQUV0QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXJELE1BQU0sUUFBUyxTQUFRLHFCQUFZO0lBQ2pDLFlBQW9CLE9BQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBR2pDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQkFBb0IsQ0FBRSxHQUFHLElBQWdCO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsbUJBQW1CLENBQUUsR0FBRyxJQUFnQjtRQUN0QyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGVBQWUsQ0FBRSxHQUFHLElBQWdCO1FBQ2xDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCx3QkFBd0I7QUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLEVBQUU7SUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSw0Q0FBNEM7UUFDdkUscUVBQXFFO1FBQ3JFLDBCQUEwQjtRQUN6QixRQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsSUFBZ0I7WUFDL0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztLQUNIO0NBQ0Y7QUFFRCwwREFBMEQ7QUFDMUQscUVBQXFFO0FBQ3JFLFNBQVMsV0FBVyxDQUFFLE9BQWU7SUFDbkMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXZDLGtCQUFlLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BFekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxNQUFhLGlCQUFpQjtJQUE5QjtRQUNVLFdBQU0sR0FBVyxDQUFDO1FBQ2xCLGNBQVMsR0FBNkIsRUFBRTtJQWtEbEQsQ0FBQztJQWhEQyxHQUFHLENBQUUsUUFBa0I7UUFDckIsaUNBQWlDO1FBQ2pDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQVMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBRSxJQUFJLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFFdEIsb0VBQW9FO1FBQ3BFLHFEQUFxRDtRQUNyRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUV6QixJQUFJLGVBQWUsQ0FBQztRQUNwQixJQUFJLEtBQUssQ0FBQztRQUVWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFBRSxTQUFTO1lBQzVDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQUUsU0FBUztZQUNqRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO2dCQUFFLFNBQVM7WUFFakQsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLElBQUksR0FBRztnQkFBRSxlQUFlLEdBQUcsR0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE1BQU07U0FDUDtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDN0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsR0FBRyxDQUFFLEVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksY0FBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBRSxFQUFVLEVBQUUsR0FBRyxJQUFXO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxFQUFVO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxRQUFRLEVBQUU7WUFDWixNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7Q0FDRjtBQXBERCw4Q0FvREM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0REQsd0pBQXdGO0FBQ3hGLDZKQUE0RjtBQUM1RixrREFBMkI7QUFFM0IsOEhBQXFFO0FBRXJFLE1BQU0sR0FBRztJQUdQLFlBQWEsS0FBYTtRQUN4QixJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGFBQWE7SUFLakIsWUFBYSxLQUFhLEVBQUUsV0FBbUI7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxzQkFBc0IsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBRUQsTUFBTSxJQUFJO0lBTVIsWUFBb0IsS0FBYSxFQUFTLE1BQWMsRUFBRSxXQUFtQixFQUFTLElBQVk7UUFBOUUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBOEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUwzRixpQkFBWSxHQUFZLEtBQUs7UUFDN0IsaUJBQVksR0FBRyxJQUFJLGFBQUssRUFBRTtRQUMxQixjQUFTLEdBQUcsSUFBSSxhQUFLLEVBQUU7UUFJNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGFBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVwRCwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCwyQ0FBbUIsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLE1BQU0sRUFBRSxFQUFFLENBQzFELE1BQXNCLEVBQUUsT0FBWSxFQUNwQyxFQUFFO1lBQ0YsTUFBTSxZQUFZLEdBQUcsY0FBYyxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QiwyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwwQkFBMEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUUsT0FBWTtRQUN2QiwyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwyQkFBMkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLDJDQUFtQixDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELHFDQUFxQztBQUNyQyxTQUFnQixRQUFRLENBQUUsV0FBbUIsRUFBRSxPQUFZO0lBQ3pELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFFckQsMkNBQW1CLENBQUMsRUFBRSxDQUFDLDRCQUE0QixXQUFXLEVBQUUsRUFBRSxDQUNoRSxNQUFzQixFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsV0FBNkIsRUFDcEYsRUFBRTtRQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQztJQUVILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsV0FBVyxFQUFFLEVBQUUsQ0FDakUsTUFBc0IsRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUN0RCxFQUFFO1FBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsMkNBQW1CLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLENBQUMsTUFBc0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtRQUN4RixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLE1BQXNCLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDeEYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE9BQU8sR0FBRztRQUNmLEVBQUUsRUFBRSxXQUFXO1FBRWYsZ0VBQWdFO1FBQ2hFLE1BQU0sRUFBRSxVQUFVLElBQVk7WUFDNUIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNoQixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsV0FBVztnQkFDckIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLFdBQVcsRUFBRTtZQUNYLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN2RixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sQ0FBRSxHQUFHLElBQWdCO1lBQzFCLDJCQUEyQjtZQUMzQixJQUFJLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztZQUNwQyxJQUFJLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDTCxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3pDO1lBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDaEgsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxXQUFXLENBQUUsR0FBRyxJQUFnQjtZQUM5QiwyQkFBMkI7WUFDM0IsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7WUFDdEMsSUFBSSxPQUFlLENBQUM7WUFDcEIsSUFBSSxPQUEyQixDQUFDO1lBQ2hDLElBQUksZ0JBQWdCLEdBQW9DLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztZQUVqRSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUMvQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDL0I7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQzthQUNsQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUMvQjtxQkFBTTtvQkFDTCxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2FBQ0Y7aUJBQU07Z0JBQ0wsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN4QztZQUVELElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQzthQUM1QztZQUVELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsU0FBUyxFQUFFLElBQUksYUFBSyxFQUFFO1FBQ3RCLFNBQVMsRUFBRSxJQUFJLGFBQUssRUFBRTtRQUN0QixXQUFXLEVBQUUsSUFBSSxhQUFLLEVBQUU7S0FDekIsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixvRUFBb0U7UUFDcEUsYUFBYSxDQUNYLEtBQWEsRUFDYixPQUF5QyxFQUN6QyxpQkFBb0QsR0FBRyxFQUFFLEdBQUUsQ0FBQztZQUU1RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7aUJBQy9FLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxrRUFBa0U7UUFDbEUsV0FBVyxDQUNULEtBQWEsRUFDYixPQUFZLEVBQ1osUUFBd0MsRUFDeEMsbUJBQW9ELEdBQUcsRUFBRSxHQUFFLENBQUM7WUFFNUQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUcsQ0FBQztRQUVELFNBQVMsRUFBRSxJQUFJLGFBQUssRUFBRTtRQUN0QixTQUFTLEVBQUUsSUFBSSxhQUFLLEVBQUU7UUFDdEIsU0FBUyxFQUFFLElBQUksYUFBSyxFQUFFO0tBQ3ZCLENBQUM7SUFFRixNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07UUFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1FBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUztLQUNwQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBTyxDQUFDLDRGQUFnRCxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlGLE1BQU0sQ0FBQyxVQUFVLEdBQUc7UUFDbEIsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQztRQUNWLFFBQVEsS0FBSyxDQUFDO1FBQ2QsUUFBUSxLQUFLLENBQUM7UUFDZCxPQUFPLEtBQUssQ0FBQztRQUNiLFFBQVEsS0FBSyxDQUFDO1FBQ2QsUUFBUSxLQUFLLENBQUM7S0FDZixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRyxtQkFBTyxDQUFDLHNGQUE2QyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsbUJBQU8sQ0FBQywwR0FBdUQsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhHLDZGQUE2RjtJQUM3RixNQUFNLENBQUMsYUFBYSxHQUFHO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2IsUUFBUSxLQUFLLENBQUM7S0FDZixDQUFDO0FBQ0osQ0FBQztBQXpKRCw0QkF5SkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3TkQsaUdBQW9DO0FBRXBDLDZKQUE0RjtBQUU1RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxELE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkI7OztPQUdHO0lBQ0gseUJBQXlCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Q0FDbkMsQ0FBQztBQUVGLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7QUFDbEUsTUFBTSxnQkFBZ0IsR0FBd0MsRUFBRSxDQUFDO0FBRWpFLG9IQUFvSDtBQUNwSCxNQUFNLDZCQUE2QixHQUFHLEdBQUcsRUFBRTtJQUN6QyxnREFBZ0Q7SUFDaEQsT0FBTyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLFVBQVUsT0FBZTtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsaUNBQWlDO0FBQ2pDLHlEQUF5RDtBQUN6RCxNQUFNLGNBQWMsR0FBRyxVQUFVLE9BQWU7SUFDOUMsSUFBSSxPQUFPLEtBQUssWUFBWTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRixNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLDJDQUEyQztBQUMzQyxNQUFNLGdCQUFnQixHQUFHLFVBQXFCLFdBQW1CLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDMUYsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUMzQyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLDZCQUE2QixFQUFFLENBQUMsQ0FBQztJQUVwRSxrRUFBa0U7SUFDbEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUVuRSxtQkFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtRQUNyQyxJQUFJLEVBQUUsR0FBRyxXQUFXLEtBQUssT0FBTyxHQUFHO1FBQ25DLDhFQUE4RTtRQUM5RSx5Q0FBeUM7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sbUJBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLE9BQXNDLEVBQUUsV0FBbUI7SUFDL0YsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRTtRQUNuQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkQ7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxVQUFxQixHQUFXLEVBQUUsSUFBWTtJQUNsRSxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsR0FBa0M7SUFDbkUsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUMvQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkM7QUFDSCxDQUFDLENBQUM7QUFFRix3QkFBd0I7QUFDeEIsMERBQTBEO0FBQzFELE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxXQUFtQixFQUFFLE1BQThCO0lBQ3ZGLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFBRSxPQUFPO0lBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFBRSxPQUFPO0lBRWpELElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtRQUNiLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLEVBQUU7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN0QzthQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxjQUFjLEVBQUU7WUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNyRDtLQUNGO0lBRUQsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGdCQUFnQixFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDckQ7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLHVEQUF1RDtBQUN2RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsVUFDcEQsS0FBcUIsRUFDckIsV0FBbUIsRUFDbkIsR0FBVyxFQUNYLElBQVk7SUFFWixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFzQyxFQUFFLEVBQUU7SUFDMUQsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUU7UUFDM0IsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3hCLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDekMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNoRDtTQUNGO0tBQ0Y7QUFDSCxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0SEYsTUFBYSxLQUFLO0lBQWxCO1FBQ1UsY0FBUyxHQUFlLEVBQUU7SUFrQnBDLENBQUM7SUFoQkMsV0FBVyxDQUFFLFFBQWtCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUUsUUFBa0I7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBRSxHQUFHLElBQVc7UUFDbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztDQUNGO0FBbkJELHNCQW1CQzs7Ozs7Ozs7Ozs7Ozs7QUNuQkQsMkNBQTJDO0FBQzNDLGlFQUFpRTtBQUNqRSxFQUFFO0FBQ0YsMENBQTBDO0FBQzFDLG1FQUFtRTs7QUFFbkUsNkpBQTRGO0FBTzVGLE1BQU0sV0FBVyxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO0lBQzFDLElBQUk7UUFDRixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQVMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUMvQjtJQUFDLFdBQU07UUFDTixPQUFPLEVBQUUsQ0FBQztLQUNYO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUF1QixFQUFFLEVBQUU7SUFDaEYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM5QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBZSxFQUFFLFlBQXlDLEVBQUUsYUFBZ0MsRUFBRSxFQUFFO0lBQzNILElBQUksT0FBTyxhQUFhLEtBQUssUUFBUTtRQUFFLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUFFLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFFdEQsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUNqRCxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTyxHQUFHLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sNEJBQTRCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsV0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXVCLEVBQUUsRUFBRTtJQUN2RixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3hDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztLQUNsRTtBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUU7SUFDdEMsT0FBTztRQUNMLFVBQVUsQ0FBRSxXQUFtQixFQUFFLGFBQXVCO1lBQ3RELE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDN0QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQzNERiw2SkFBNEY7QUFFNUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsUUFBa0IsRUFBRSxFQUFFO0lBQ2xGLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVTtRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVoRixnQkFBZ0IsQ0FBQyxNQUFNLENBQVMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQztTQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsK0NBQStDO1lBQy9DLHdEQUF3RDtZQUN4RCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsT0FBNEIsRUFBRSxRQUFrQixFQUFFLEVBQUU7SUFDaEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUM7U0FDNUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULElBQUksUUFBUTtZQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFdBQW1CLEVBQUUsV0FBbUIsRUFBRSxFQUFFO0lBQ3JFLE9BQU87UUFDTCxHQUFHLENBQUUsSUFBYyxFQUFFLFFBQWtCO1lBQ3JDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFO2dCQUNwRSxJQUFJLElBQUksSUFBSSxJQUFJO29CQUFFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLFFBQVEsR0FBd0IsRUFBRSxDQUFDO2dCQUN2QyxRQUFRLE9BQU8sSUFBSSxFQUFFO29CQUNuQixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2QsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ3hCLFFBQVEsR0FBRyxJQUFJLENBQUM7NEJBQ2hCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUMxQjt3QkFDRCxNQUFNO2lCQUNUO2dCQUVELCtDQUErQztnQkFDL0Msd0RBQXdEO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFBRSxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFM0MsTUFBTSxLQUFLLEdBQXdCLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pCLElBQUksS0FBSyxJQUFJLElBQUk7d0JBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEdBQUcsQ0FBRSxLQUEwQixFQUFFLFFBQWtCO1lBQ2pELFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFO2dCQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckUsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sQ0FBRSxJQUFjLEVBQUUsUUFBa0I7WUFDeEMsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUE0QixFQUFFLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssQ0FBRSxRQUFrQjtZQUN2QixVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFVyxhQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQzVDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0NBQy9DLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDckZILDhIQUFxRTtBQUVyRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBTyxDQUFDLGtHQUFtRCxDQUFDLENBQUM7QUFFN0YsTUFBTSxhQUFhO0lBSWpCO1FBSFEscUJBQWdCLEdBQUcsSUFBSSxhQUFLLEVBQUU7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLGFBQUssRUFBRTtRQUcvQixtQkFBbUIsQ0FBQyxFQUFFLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE9BQVksRUFBRSxFQUFFO1lBQ3BHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE9BQVksRUFBRSxFQUFFO1lBQy9GLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRVksYUFBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQ25CL0MsNkRBQXNDO0FBQ3RDLHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxnRkFBZ0Y7QUFDaEYsMERBQTBEO0FBQzFELEVBQUU7QUFDRiw4RUFBOEU7QUFDOUUsa0NBQWtDO0FBQ2xDLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUscUVBQXFFO0FBQ3JFLDZFQUE2RTtBQUM3RSx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLDJFQUEyRTtBQUMzRSx5RUFBeUU7QUFDekUseUVBQXlFO0FBQ3pFLE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDZix5RkFBeUY7UUFDekYsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxzRUFBc0U7SUFDdEUsc0VBQXNFO0NBQ3ZFLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsdUNBQXVDO0FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUUxQixzQkFBc0I7QUFFdEIsbUJBQU8sQ0FBQyx3RUFBOEIsQ0FBQyxDQUFDO0FBRXhDLDBCQUEwQjtBQUMxQixtQkFBTyxDQUFDLDREQUFnQyxDQUFDLENBQUM7QUFFMUMsZ0VBQWdFO0FBQ2hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxxQkFBWSxFQUFFLENBQUM7QUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUM5QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDakQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFFbEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0lBQ3pDLFNBQVMsQ0FBRSxRQUFpQixFQUFFLE9BQWUsRUFBRSxJQUFXLEVBQUUsUUFBZ0I7UUFDMUUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILGlEQUFpRDtBQUNqRCxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBTyxDQUFDLGtHQUFtRCxDQUFDLENBQUM7QUFDN0YsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBTyxDQUFDLDhHQUF5RCxDQUFDLENBQUM7QUFDNUYsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLG1CQUFPLENBQUMsb0ZBQTRDLENBQUMsQ0FBQztBQUMvRSxZQUFZLEVBQUUsQ0FBQztBQUVmLGtDQUFrQztBQUNsQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFOUUsTUFBTSxXQUFXLEdBQUcsVUFDbEIsSUFBWSxFQUFFLFlBQWUsRUFBRSxTQUFnQztJQUUvRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQ0EsU0FBUztZQUNQLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQ3pCO1FBQ0QsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM1QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUU3RCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBYSxDQUFDO0FBQzVHLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFMUUsZ0RBQWdEO0FBQ2hELE1BQU0saUJBQWlCLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0FBRWpILDhFQUE4RTtBQUM5RSxJQUFJLGFBQWEsRUFBRTtJQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0NBQ3BDO0FBRUQsUUFBUSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ2hCLGdDQUFnQztRQUNoQyxtQkFBTyxDQUFDLDBFQUF1QyxDQUFDLENBQUM7UUFDakQsTUFBTTtLQUNQO0lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hCLDBEQUEwRDtRQUMxRCxtQkFBTyxDQUFDLDRFQUF3QyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLE1BQU07S0FDUDtJQUNELEtBQUssU0FBUztRQUNaLE1BQU07SUFDUixPQUFPLENBQUMsQ0FBQztRQUNQLGtDQUFrQztRQUNsQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxnRkFBMEMsQ0FBQyxDQUFDO1FBQzVFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNFLDBCQUEwQjtRQUMxQixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQWtDLENBQUM7UUFDcEgsbUJBQU8sQ0FBQyx3R0FBc0QsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pGO0NBQ0Y7QUFFRCxtQ0FBbUM7QUFDbkMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO0lBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxtQkFBTyxDQUFDLG9HQUFvRCxDQUFDLENBQUM7SUFDdEYsV0FBVyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztDQUM1RDtBQUVELHVDQUF1QztBQUN2QyxJQUFJLGdCQUFnQixFQUFFO0lBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDLENBQUM7Q0FDekU7QUFFRCxJQUFJLGVBQWUsRUFBRTtJQUNuQixrQ0FBa0M7SUFDbEMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBdUIsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFDLHNCQUFzQjtJQUM5RyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsdUVBQXVFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUVqQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ2hDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7Z0JBQUUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkQsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsSUFBSSx5QkFBeUIsRUFBRTtnQkFDN0IsUUFBUSxHQUFHLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQzthQUM3QztTQUNGO1FBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRCxrRUFBa0U7UUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUUzQyw4Q0FBOEM7UUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqRTtTQUFNO1FBQ0wsMkRBQTJEO1FBQzNELE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0YsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpGLElBQUksT0FBTyxFQUFFO1lBQ1gsNENBQTRDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4RDtLQUNGO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSztRQUNwRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELCtEQUErRDtZQUMvRCxrRUFBa0U7WUFDbEUsWUFBWTtZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUEwQixFQUFFLEtBQVksQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUM7Q0FDSDtLQUFNO0lBQ0wsbUVBQW1FO0lBQ25FLG1DQUFtQztJQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0IsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0tBQ0o7Q0FDRjtBQUVELE1BQU0sVUFBVSxHQUFHLG1CQUFPLENBQUMsMEVBQXVDLENBQUMsQ0FBQztBQUVwRSw0QkFBNEI7QUFDNUIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7SUFDMUMsSUFBSTtRQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDN0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN4RztDQUNGO0FBRUQsNkJBQTZCO0FBQzdCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtJQUN2QixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxtQkFBTyxDQUFDLDBGQUErQyxDQUFDLENBQUM7SUFDdEYsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDbkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0TkQsMEtBQTZGO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLEdBQUc7SUFDZCxxQ0FBcUM7SUFDckMsTUFBTSxDQUFDLHFCQUFzQixDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztJQUVsRSwwREFBMEQ7SUFDMUQsTUFBTSxDQUFDLFdBQVksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBRXpFLGtEQUFrRDtJQUNsRCxNQUFNLENBQUMsRUFBRyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLGtFQUFrRTtBQUNsRSxTQUFTLFdBQVcsQ0FBRSxPQUFlLEVBQUUsSUFBWTtJQUNqRCxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELCtEQUErRDtBQUM5RCxNQUFNLENBQUMsT0FBZSxHQUFHLFVBQVUsT0FBZSxFQUFFLEtBQWE7SUFDaEUsT0FBTyx3Q0FBVSxDQUFDLDRCQUE0QixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQVksQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUF3QjtJQUMvRSxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztRQUNsRixPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTztZQUNqQyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7WUFDOUIsT0FBdUIsQ0FBQyxpQkFBaUIsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUF3QjtJQUN6RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELG9DQUFNLENBQVMsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM3RSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUMxQixNQUFNLENBQUMsV0FBWSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsTUFBTSxDQUFDLFdBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLFFBQThCO0lBQ3BFLG9DQUFNLENBQWtCLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUM5RSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDaEIsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLFVBQVUsSUFBWSxFQUFFLElBQVM7SUFDN0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsVUFBcUIsUUFBb0I7SUFDekUsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzNDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUMzREYsd0pBQXdGO0FBQ3hGLG1IQUFvRTtBQUl2RCxjQUFNLEdBQUcsVUFBaUMsT0FBZSxFQUFFLE9BQVU7SUFDaEYsMkNBQW1CLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtRQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDdEQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxhQUFhLFNBQVMsRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmLFNBQWdCLE1BQU0sQ0FBSyxPQUFlLEVBQUUsR0FBRyxJQUFXO0lBQ3hELE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsRUFBRSxNQUFNLENBQUM7UUFDM0IsMkNBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxhQUFhLFNBQVMsRUFBRSxFQUFFLENBQzNELE1BQU0sRUFBRSxLQUErQixFQUFFLE1BQVcsRUFDcEQsRUFBRTtZQUNGLElBQUksS0FBSyxFQUFFO2dCQUNULE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWRELHdCQWNDO0FBRUQsU0FBZ0IsVUFBVSxDQUFLLE9BQWUsRUFBRSxHQUFHLElBQVc7SUFDNUQsTUFBTSxDQUFFLEtBQUssRUFBRSxNQUFNLENBQUUsR0FBRywyQ0FBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRS9FLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO1NBQU07UUFDTCxPQUFPLE1BQU0sQ0FBQztLQUNmO0FBQ0gsQ0FBQztBQVJELGdDQVFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDNUNELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxzQkFBc0I7QUFDVCwyQkFBbUIsR0FBaUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDL0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRXRCLDJCQUFtQixDQUFDLElBQUksR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDbkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLFFBQVEsR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDdkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLE1BQU0sR0FBRyxVQUFVLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3BFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLFNBQVMsR0FBRyxVQUFVLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCRixpR0FBb0M7QUFDcEMsMEtBQWlGO0FBRWpGLElBQUksU0FBUyxHQUFtQixJQUFJLENBQUM7QUFFckMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRTVDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtRQUN0QixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssUUFBUTtZQUNYLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuQyxRQUFRLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDbkUsTUFBTTtRQUNSLEtBQUssU0FBUyxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0MsTUFBTTtRQUNSLEtBQUssT0FBTztZQUNWLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEQsTUFBTTtRQUNSO1lBQ0UsU0FBUyxHQUFHLEtBQUssQ0FBQztLQUNyQjtJQUVELElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGtDQUFrQyxDQUFDO1FBQy9DLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFO1FBQ3pELFNBQVMsR0FBRyxLQUFLLENBQUM7S0FDbkI7SUFFRCxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztRQUM5QyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsaUNBQWlDLENBQUMsRUFBRTtRQUN4RCxTQUFTLEdBQUcsSUFBSSxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixPQUFPLG1CQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxJQUFJO1lBQ0YsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7U0FDNUQ7UUFBQyxXQUFNO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRzs7MEJBRUUsQ0FBQztBQUUzQjs7Ozs7R0FLRztBQUNILE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO1FBQzFFLE9BQU87S0FDUjtJQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXO1NBQ2pDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztTQUM1QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZELE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUM7U0FDNUQsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZCxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3hDLE9BQU87S0FDUjtJQUVELE1BQU0sT0FBTyxHQUFHOzttRUFFaUQsU0FBUztNQUN0RSxlQUFlLEVBQUUsQ0FBQztJQUV0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxFQUM3RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sOEJBQThCLEdBQUcsVUFBVSxlQUF3QjtJQUN2RSxJQUFJLENBQUMsZUFBZSxJQUFJLFdBQVcsRUFBRTtRQUFFLE9BQU87SUFFOUMsSUFBSSxtQkFBbUIsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sT0FBTyxHQUFHO2lEQUM2QixNQUFNLENBQUMsUUFBUTsyREFDTCxlQUFlLEVBQUUsQ0FBQztRQUV6RSxPQUFPLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxFQUNsRixvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSw2RUFBNkU7QUFDN0UsRUFBRTtBQUNGLGtGQUFrRjtBQUNsRixzRkFBc0Y7QUFFdEY7Ozs7R0FJRztBQUNILE1BQU0sNEJBQTRCLEdBQUcsVUFBVSxjQUF3QztJQUNyRixJQUFJLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEtBQUssS0FBSztRQUFFLE9BQU87SUFFcEUsTUFBTSxPQUFPLEdBQUc7eURBQ3VDLGVBQWUsRUFBRSxDQUFDO0lBRXpFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQy9ELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixNQUFNLE9BQU8sR0FBRzs7K0NBRTJCLGVBQWUsRUFBRSxDQUFDO1FBRTdELE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEVBQzNFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sK0JBQStCLEdBQUcsVUFBVSxjQUF3QztJQUN4RixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLDJCQUEyQjtRQUFFLE9BQU87SUFFM0UsTUFBTSxPQUFPLEdBQUc7O0lBRWQsZUFBZSxFQUFFLENBQUM7SUFFcEIsT0FBTyxDQUFDLElBQUksQ0FBQywyREFBMkQsRUFDdEUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsVUFBVSxjQUF3QztJQUN0RixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsRUFBRTtRQUM3RCxPQUFPO0tBQ1I7SUFFRCxNQUFNLE9BQU8sR0FBRzs7MENBRXdCLGVBQWUsRUFBRSxDQUFDO0lBRTFELE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQy9ELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLDRCQUE0QixHQUFHLFVBQVUsY0FBd0M7SUFDckYsSUFBSSxDQUFDLGNBQWM7UUFDakIsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDO1FBQ3JELENBQUMsY0FBYyxDQUFDLG1CQUFtQixJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDekYsT0FBTztLQUNSO0lBRUQsTUFBTSxPQUFPLEdBQUc7OytDQUU2QixlQUFlLEVBQUUsQ0FBQztJQUUvRCxPQUFPLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxFQUM5RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUMsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUc7OztNQUdkLGVBQWUsRUFBRSxDQUFDO1FBRXBCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQ3RELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLCtDQUErQztBQUMvQyxvQ0FBb0M7QUFDcEMsaURBQWlEO0FBQ2pELHlEQUF5RDtBQUV6RCxvREFBb0Q7QUFDcEQsaURBQWlEO0FBRWpELE1BQU0sc0NBQXNDLEdBQUcsVUFBVSxjQUF3QztJQUMvRixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsRUFBRTtRQUFFLE9BQU87SUFFbkYsSUFBSSxtQkFBbUIsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sT0FBTyxHQUFHO2lEQUM2QixNQUFNLENBQUMsUUFBUTtnRUFDQSxlQUFlLEVBQUUsQ0FBQztRQUU5RSxPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxFQUM3RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxtQ0FBbUM7QUFFbkMsTUFBTSxtQkFBbUIsR0FBRyxVQUMxQixjQUFtRCxFQUFFLGVBQXdCO0lBRTdFLDhCQUE4QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLDBCQUEwQixFQUFFLENBQUM7SUFDN0IsK0JBQStCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsNkJBQTZCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0Msb0JBQW9CLEVBQUUsQ0FBQztJQUN2QixzQkFBc0IsRUFBRSxDQUFDO0lBQ3pCLHNDQUFzQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSztJQUM3QixJQUFJO1FBQ0YsT0FBTyxvQ0FBTSxDQUEwQiwyQ0FBMkMsQ0FBQyxDQUFDO0tBQ3JGO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzFEO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsZ0JBQWdCLENBQUUsZUFBd0I7SUFDeEQsTUFBTSxXQUFXLEdBQUcsS0FBSztRQUN2QixJQUFJLHlCQUF5QixFQUFFLEVBQUU7WUFDL0IsTUFBTSxjQUFjLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELG1CQUFtQixDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQVJELDRDQVFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDM1RELGlHQUE4QztBQUM5Qyw2SkFBNEY7QUFRL0Usb0JBQVksR0FBRyxHQUFHLEVBQUU7SUFDL0IsdUJBQXVCO0lBQ3ZCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw2Q0FBNkMsRUFBRSxDQUNyRSxLQUFLLEVBQUUsTUFBNEIsRUFBRSxHQUFHLElBQVcsRUFDbkQsRUFBRTtRQUNGLDREQUE0RDtRQUM1RCxrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELE9BQVEsbUJBQVEsQ0FBQyxNQUFNLENBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNuQkYsaUdBQXFEO0FBQ3JELHdKQUF3RjtBQUN4RiwwS0FBNkY7QUFJN0YsTUFBTSxlQUFlLEdBQWtDO0lBQ3JELGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7SUFDckMsWUFBWSxFQUFFLEVBQUU7SUFDaEIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixlQUFlLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNySCx1QkFBdUIsRUFBRSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUM1RSxtQkFBbUIsRUFBRSxFQUFFO0lBQ3ZCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsV0FBVyxFQUFFLEVBQUU7SUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUMzRCxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDMUIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDO0lBQzVELGVBQWUsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QixzQkFBc0IsRUFBRSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQy9GLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUM3RCxvQkFBb0IsRUFBRSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEgsc0JBQXNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQ2xGLGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQztJQUM1QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFNBQVMsRUFBRSxFQUFFO0lBQ2IsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO0lBQ3JDLFdBQVcsRUFBRSxFQUFFO0lBQ2Ysb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQzlDLHNCQUFzQixFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3BDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsd0JBQXdCLEVBQUUsRUFBRTtJQUM1Qix1QkFBdUIsRUFBRSxFQUFFO0lBQzNCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUMzQix3QkFBd0IsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUN4QyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssQ0FBQztDQUM3QixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBMkI7SUFDaEQsb0JBQW9CLEVBQUUsZ0JBQWdCO0NBQ3ZDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxVQUNwQixPQUFvQixFQUFFLFNBQWlCLEVBQUUsUUFBZ0IsRUFBRSxHQUFHLElBQWdCO0lBRTlFLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3hDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDekU7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQWtDLENBQUM7SUFDdkUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMvQyxRQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEMsSUFBSSxTQUFTLEtBQUssYUFBYSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDaEM7U0FBTSxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7UUFDdkMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQ3pCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsY0FBYyxDQUFFLE9BQW9CLEVBQUUsY0FBc0I7SUFDMUUsMkNBQW1CLENBQUMsRUFBRSxDQUFDLDhDQUE4QyxjQUFjLEVBQUUsRUFBRTtRQUNyRixPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztRQUNwQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQywrQ0FBK0MsY0FBYyxFQUFFLEVBQUUsVUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSTtRQUN6SCxhQUFhLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQyw0Q0FBNEMsY0FBYyxFQUFFLEVBQUUsVUFBVSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNwSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQW9CLENBQUM7UUFDN0QsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDM0IsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0NBbUJDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUUsY0FBc0I7SUFDdEQsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsOENBQThDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkcsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsK0NBQStDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDeEcsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsNENBQTRDLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDdkcsQ0FBQztBQUpELDRDQUlDO0FBRUQsU0FBZ0IsV0FBVyxDQUFFLE1BQTJCO0lBQ3RELE9BQU8sb0NBQU0sQ0FBQywwQ0FBMEMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixlQUFlLENBQUUsTUFBMkI7SUFDMUQsT0FBTyx3Q0FBVSxDQUFDLDBDQUEwQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFGRCwwQ0FFQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsaUJBQXlCLEVBQUUsZUFBdUIsRUFBRSxNQUEyQixFQUFFLGFBQXFCO0lBRXRHLE1BQU0sZUFBZSxHQUFJLG1CQUE4QyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRyxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxnQ0FBZ0M7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzNDO0lBQ0Qsb0NBQU0sQ0FBQywwQ0FBMEMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xILENBQUM7QUFSRCxrQ0FRQztBQUVZLCtCQUF1QixHQUFHO0lBQ3JDLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZUFBZTtJQUNmLFdBQVc7Q0FDWixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNySEYsNkpBQTRGO0FBQzVGLGtKQUFpRjtBQUdqRixtREFBbUQ7QUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQW1CO0lBQzlDLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBTUYscUJBQXFCO0FBQ3JCLGlEQUFpRDtBQUNqRCxNQUFNLGdCQUFnQjtJQUlwQixZQUFvQixJQUFZLEVBQVMsV0FBd0I7UUFBN0MsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjFELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBdUM5Qiw2Q0FBNkM7UUFDdEMsbUJBQWMsR0FBc0MsR0FBRyxFQUFFLENBQUMsU0FBZ0I7UUFyQy9FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUksV0FBVyxDQUFDLFdBQW1DLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM1RSxDQUFDO0lBRUQsOEJBQThCO0lBQ3ZCLFFBQVEsQ0FBRSxLQUFVO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQseUVBQXlFO0lBQ2xFLHNCQUFzQixDQUFFLEtBQVU7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsNERBQTREO0lBQ3JELGNBQWM7UUFDbkIsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEUsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBSUY7QUFFRCw2Q0FBNkM7QUFDN0MsTUFBTSxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFDN0MsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7Q0FDRjtBQUVELDZEQUE2RDtBQUM3RCxNQUFNLGtCQUFtQixTQUFRLGdCQUFnQjtJQUcvQyxZQUFvQixXQUF3QjtRQUMxQyxLQUFLLHdDQUF5QyxXQUFXLENBQUMsQ0FBQztRQUR6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUZyQyxxQkFBZ0IsR0FBRyxJQUFJO1FBTXZCLG1CQUFjLEdBQUcsQ0FBQyxRQUFhLEVBQUUsUUFBYSxFQUFFLEVBQUU7WUFDdkQsUUFBUSxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFFMUIsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFO2dCQUMzQyxPQUFPLENBQUMsS0FBSywyR0FBZ0QsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPO2FBQ1I7WUFDRCxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxLQUFLLDRFQUEwRCxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQztJQWZELENBQUM7Q0FnQkY7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxZQUFhLFNBQVEsZ0JBQWdCO0lBR3pDLFlBQW9CLFdBQXdCO1FBQzFDLEtBQUssNEJBQW1DLFdBQVcsQ0FBQyxDQUFDO1FBRG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdUJyQyxtQkFBYyxHQUFHLENBQUMsUUFBYSxFQUFFLFFBQWEsRUFBRSxFQUFFO1lBQ3ZELHFFQUFxRTtZQUNyRSxpRUFBaUU7WUFDakUscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO2dCQUN6QixvRUFBb0U7Z0JBQ3BFLGtFQUFrRTtnQkFDbEUsdUNBQXVDO2dCQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFqQ0MsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRU0sc0JBQXNCLENBQUUsS0FBVTtRQUN2QyxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsMkVBQTJFO1FBQzNFLHNFQUFzRTtRQUN0RSwyRUFBMkU7UUFDM0UsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQWdCRCwwRUFBMEU7SUFDMUUseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSw0QkFBNEI7SUFDckIscUJBQXFCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2pELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUNoQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDO2dCQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRTtvQkFDekIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN6QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUc7WUFDYixVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDN0IsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHVDQUF3QyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xKLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDaEM7WUFDRCxPQUFPO1NBQ1I7UUFFRCwwQkFBMEI7UUFDMUIsTUFBTSxJQUFJLEdBQTJCLEVBQUUsQ0FBQztRQUV4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsNkNBQTJDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkcsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDbEM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsdUNBQXdDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakcsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1QjtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0NBQWtDLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0Y7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFDbEQsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLDhDQUE0QyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0Y7QUFFRCxpQ0FBaUM7QUFDakMsTUFBTSxrQkFBbUIsU0FBUSxnQkFBZ0I7SUFDL0MsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLHdDQUF5QyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFDN0MsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLG9DQUF1QyxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjtRQUVELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxLQUFLLDRHQUF3RCxDQUFDO1lBQ3RFLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDZDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELDZEQUE2RDtBQUM3RCxNQUFNLHNCQUF1QixTQUFRLGdCQUFnQjtJQUNuRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssZ0RBQTZDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLDZCQUE4QixTQUFRLGdCQUFnQjtJQUMxRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssOERBQW9ELFdBQVcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLHVCQUF3QixTQUFRLGdCQUFnQjtJQUNwRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssa0RBQThDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQUVELE1BQU0sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBQ3hELFlBQWEsV0FBd0I7UUFDbkMsS0FBSywwREFBa0QsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDO0lBQzFFLENBQUM7SUFFTSxRQUFRLENBQUUsS0FBVTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBRUQseUNBQXlDO0FBQ3pDLDJCQUFXLENBQUMsU0FBUyxDQUFDLHNCQUFzQixHQUFHO0lBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksQ0FBQyxVQUFVLHVDQUF3QyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsSUFBSSxDQUFDLFVBQVUsMkJBQWtDLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLFVBQVUsNkNBQTJDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RixJQUFJLENBQUMsVUFBVSx1Q0FBd0MsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLElBQUksQ0FBQyxVQUFVLG1EQUE4QyxHQUFHLElBQUksZ0JBQWdCLG9EQUErQyxJQUFJLENBQUMsQ0FBQztJQUN6SSxJQUFJLENBQUMsVUFBVSx5RUFBeUQsR0FBRyxJQUFJLGdCQUFnQiwwRUFBMEQsSUFBSSxDQUFDLENBQUM7SUFDL0osSUFBSSxDQUFDLFVBQVUsbUNBQXNDLEdBQUcsSUFBSSxnQkFBZ0Isb0NBQXVDLElBQUksQ0FBQyxDQUFDO0lBQ3pILElBQUksQ0FBQyxVQUFVLHlEQUFpRCxHQUFHLElBQUksZ0JBQWdCLDBEQUFrRCxJQUFJLENBQUMsQ0FBQztJQUMvSSxJQUFJLENBQUMsVUFBVSwyQ0FBMEMsR0FBRyxJQUFJLGdCQUFnQiw0Q0FBMkMsSUFBSSxDQUFDLENBQUM7SUFDakksSUFBSSxDQUFDLFVBQVUseURBQWlELEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RyxJQUFJLENBQUMsVUFBVSxtQ0FBc0MsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLElBQUksQ0FBQyxVQUFVLCtDQUE0QyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0YsSUFBSSxDQUFDLFVBQVUsNkRBQW1ELEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsVUFBVSxpREFBNkMsR0FBRyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25HLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUNuU0YsMEVBQTBFO0FBQzFFLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw0RUFBNEU7O0FBSzVFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBNEIsRUFBRSxXQUFxQyxFQUFFLEVBQUU7SUFDbkcsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUN2RCxPQUFPLE1BQU0sY0FBZSxTQUFRLFdBQVc7UUFHN0MsTUFBTSxLQUFLLGtCQUFrQjtZQUMzQixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7YUFlTixDQUFDO1FBQ0osQ0FBQztRQUVEO1lBQ0UsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsaUJBQWlCO1lBQ2YsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBZSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtnQkFDN0IsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BFLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsVUFBVSwyQkFBa0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvRDtRQUNILENBQUM7UUFFRCx3QkFBd0IsQ0FBRSxJQUFZLEVBQUUsUUFBYSxFQUFFLFFBQWE7WUFDbEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBZSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbkU7UUFDSCxDQUFDO1FBRUQsb0JBQW9CO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQWUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTzthQUNSO1lBQ0QsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVELFFBQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFDNUIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYscUNBQXFDO0FBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLFdBQXFDLEVBQUUsRUFBRTtJQUNyRyw0Q0FBNEM7SUFDNUMsMkJBQTJCO0lBQzNCLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQXNEO0lBRXJILFdBQVcsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFekMsaUVBQWlFO0lBQ2pFLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUE2QyxDQUFDO0lBQzNFLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFjLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUV6Qyw2RUFBNkU7UUFDN0UsWUFBWTtRQUNaLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7UUFDckQsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDO1FBRXpELHdFQUF3RTtRQUN4RSxxQkFBcUI7UUFDckIsb0VBQW9FO1FBQ3BFLE9BQVEsY0FBc0IsQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLDZDQUE2QztBQUNoQyxvQkFBWSxHQUFHLENBQUMsTUFBNEIsRUFBRSxXQUFxQyxFQUFFLEVBQUU7SUFDbEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPO1NBQ1I7UUFFRCxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUIsc0JBQXNCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDckhGLGlHQUE0QztBQUU1Qyw2SkFBNEY7QUFDNUYsZ0tBQThGO0FBRTlGLHFJQUFtRztBQUNuRyxtSEFBbUU7QUFFbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxnQkFBZ0I7QUFDaEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWYsTUFBTSxTQUFTLEdBQUc7SUFDaEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBYSxXQUFXO0lBa0J0QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpCckMsMEJBQXFCLEdBQUcsSUFBSTtRQUM1QixvQkFBZSxHQUFHLEtBQUs7UUFFdkIsYUFBUSxHQUFHLEtBQUs7UUFNdkIsc0JBQXNCO1FBQ2YsT0FBRSxHQUF3QixFQUFFO1FBR25DLGtDQUFrQztRQUMzQixlQUFVLEdBQXdCLEVBQUU7UUFJekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRSxVQUFVLENBQUMsU0FBUyxHQUFHLHdFQUF3RSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDbEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFN0MsbUNBQW1DO1FBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDdkQsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1lBQzVDLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBbEJNLHNCQUFzQixLQUFXLENBQUM7SUFvQnpDLHFCQUFxQjtRQUNuQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN0QyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLEtBQUs7UUFDSCx5RUFBeUU7UUFDekUsOEVBQThFO1FBQzlFLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsOEVBQThFO1FBQzlFLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsdUNBQXdDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRWhGLHVFQUF1RTtRQUN2RSxvRUFBb0U7UUFDcEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUVoQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSwwRUFBMEU7SUFDMUUsV0FBVztJQUNYLDhCQUE4QixDQUFFLGFBQXFCLEVBQUUsUUFBYSxFQUFFLFFBQWE7UUFDakYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLEVBQUU7WUFDcEYsT0FBTztTQUNSO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBeUMsQ0FBQztRQUNoRixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsYUFBYSxDQUFFLFlBQTRCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsb0JBQW9CO0lBQ3BCLGtCQUFrQixDQUFFLFNBQWlCO1FBQ25DLE1BQU0sWUFBWSxHQUFHLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFO1lBQzNELEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztpQkFDeEU7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksS0FBSyxFQUFFO29CQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQztZQUNELFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsWUFBWSxDQUFFLFlBQTJDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSwyQkFBa0MsQ0FBQztRQUNqRixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksWUFBWSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsRUFBRTtZQUN2RCw2REFBNkQ7WUFDN0QsZ0VBQWdFO1lBQ2hFLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsVUFBVSwyQkFBa0MsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRjtJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsYUFBYTtRQUNYLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM3RCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFFLGtCQUEwQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLHVDQUF3QyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQXdCO1lBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYztZQUMvQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1NBQzFDLENBQUM7UUFFRixLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkU7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxlQUF1QjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixxRUFBcUU7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXZDLGlCQUFpQixDQUFDLFdBQVcsQ0FDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYyxDQUNwQyxDQUFDO1FBRUYsbUVBQW1FO1FBQ25FLDRCQUE0QjtRQUM1Qix3RUFBd0U7UUFDeEUsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBOUxELGtDQThMQztBQUVZLHVCQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLG1CQUFPLENBQUMsZ0hBQTBELENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRiw0Q0FBNEM7QUFDNUMsMkJBQTJCO0FBQ2Qsb0JBQVksR0FBRyxDQUFDLGNBQXNELEVBQUUsRUFBRTtJQUNyRixjQUFjLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHO1FBQzFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQWMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkdBQTJHLENBQUMsQ0FBQztTQUM5SDtRQUNELE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRiw0Q0FBNEM7SUFDNUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUc7UUFDeEMsSUFBSSxDQUFDLGlCQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFjLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUM3QixRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDNUI7UUFFRCxPQUFRLGlCQUFrQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFnQixDQUFDLENBQUM7SUFDNUYsQ0FBQyxDQUFDO0lBRUYsd0VBQXdFO0lBQ3hFLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxNQUFjO1FBQ2pELE9BQU8sVUFBaUQsR0FBRyxJQUFnQjtZQUN6RSxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSw4QkFBVyxFQUFFO1FBQy9CLGNBQWMsQ0FBQyxTQUFpQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hGO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLE1BQWM7UUFDcEQsT0FBTyxVQUFpRCxHQUFHLElBQWdCO1lBQ3pFLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLCtCQUFZLEVBQUU7UUFDaEMsY0FBYyxDQUFDLFNBQWlDLENBQUMsTUFBTSxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0Y7SUFFRCxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLFdBQVcsR0FBRyxJQUFJO1FBQzVELE9BQU8sd0JBQVcsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLE1BQU0sQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ILENBQUMsQ0FBQztJQUVGLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxRQUFnQjtRQUNyRCxPQUFPO1lBQ0wsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsMENBQTBDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLFFBQWdCO1FBQ3JELE9BQU8sVUFBaUQsR0FBUTtZQUM5RCxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLFFBQVEsSUFBSSw2QkFBVSxFQUFFO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7WUFDeEQsR0FBRyxFQUFFLG9CQUFvQixDQUFDLFFBQVEsQ0FBUTtZQUMxQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDO0FBRVcseUJBQWlCLEdBQUc7SUFDL0IsZUFBZSxFQUFmLHVCQUFlO0lBQ2YsWUFBWSxFQUFaLG9CQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLFFBQVEsRUFBUixtQkFBUTtJQUNSLFdBQVc7Q0FDWixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDdFNGLHdKQUF3RjtBQUV4RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxELFNBQVMsZUFBZSxDQUFFLGVBQXVCO0lBQy9DLDJFQUEyRTtJQUMzRSx5Q0FBeUM7SUFFekMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDcEMsMkNBQW1CLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM5RixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ25DLDJDQUFtQixDQUFDLElBQUksQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUN6QixnQkFBeUIsRUFBRSxVQUEyQyxFQUFFLGVBQXVCO0lBRS9GLHFDQUFxQztJQUNyQyxJQUFJLFVBQVUsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLG1CQUFPLENBQUMsb0dBQW9ELENBQUMsQ0FBQztRQUM1RixJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsbUJBQU8sQ0FBQywwR0FBdUQsQ0FBQyxDQUFDO1lBQzFGLFlBQVksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUN6QztLQUNGO0lBRUQsSUFBSSxlQUFlLEVBQUU7UUFDbkIsa0RBQWtEO1FBQ2xELGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUM7QUFsQkQsa0NBa0JDOzs7Ozs7Ozs7Ozs7Ozs7QUNuQ0QsMEVBQTBFO0FBQzFFLG1FQUFtRTtBQUNuRSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLHFFQUFxRTtBQUNyRSxtREFBbUQ7O0FBRW5ELDBFQUEwRTtBQUMxRSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFXLElBQUksTUFBYSxDQUFDLENBQUMsTUFBdUIsQ0FBQztBQUtyRSwwQkFBTztBQUpULE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFLOUIsMEJBQU87QUFKVCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBSzVCLHdCQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQlIsd0pBQXdGO0FBQ3hGLDZKQUE0RjtBQUU1RiwyQ0FBMkM7QUFDM0MsMEJBQTBCO0FBQzFCLDZCQUE2QjtBQUM3Qix3QkFBd0I7QUFDeEIsMEJBQTBCO0FBQzFCLGtCQUFrQjtBQUNsQix5QkFBeUI7QUFDekIsMEJBQTBCO0FBQzFCLHlCQUF5QjtBQUN6QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDBCQUEwQjtBQUMxQixnQ0FBZ0M7QUFDaEMsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQiw2QkFBNkI7QUFFN0IsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztBQUUxRSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLDJEQUEyRDtBQUMzRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQzlCLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUF1QyxFQUFFLENBQUM7QUFFN0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzNDLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDakIsS0FBSyxHQUFHLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNoQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtJQUN0QyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFJRixNQUFNLGFBQWE7SUFxQ2pCLFlBQWEsT0FBZTtRQUMxQixpREFBaUQ7UUFDakQsNERBQTREO1FBQzVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUE5QkQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLGFBQWEsQ0FBSyxNQUFxQixFQUFFLFdBQStCO1FBQ3JGLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN6QyxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzFDLENBQUM7WUFDRCxHQUFHLEVBQUUsVUFBK0IsTUFBUztnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLFFBQVEsRUFBRTtvQkFDWiwrREFBK0Q7b0JBQy9ELG9EQUFvRDtvQkFDbkQsUUFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUM7b0JBRXhDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDdEU7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBVyxDQUFDO1FBQ3hFLElBQUk7WUFDRixPQUFPLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHdCQUF3QixDQUFFLE1BQWMsRUFBRSxHQUFHLElBQVc7UUFDOUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsbURBQW1ELEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU8sNEJBQTRCLENBQUUsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUNsRSxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxtREFBbUQsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pILENBQUM7Q0FDRjtBQWxFOEI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7MkNBQXNCO0FBQ3JCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOzJDQUFzQjtBQUNyQjtJQUE1QixhQUFhLENBQUMsYUFBYTsyQ0FBc0I7QUFDckI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7K0NBQTBCO0FBQ3pCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOzZDQUF3QjtBQUN2QjtJQUE1QixhQUFhLENBQUMsYUFBYTsrQ0FBMEI7QUFDekI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7MkNBQXNCO0FBQ3JCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOytDQUEwQjtBQUN6QjtJQUE1QixhQUFhLENBQUMsYUFBYTs2Q0FBaUM7QUE0RC9ELE1BQU0sa0JBQWtCO0lBaUJ0QixZQUFhLE9BQWU7UUFoQnJCLFdBQU0sR0FBWSxLQUFLO1FBaUI1QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLDJDQUFtQixDQUFDLElBQUksQ0FBQywrQ0FBK0MsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQ3RGLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFuQkQsbUVBQW1FO0lBQ25FLDhEQUE4RDtJQUM5RCxzREFBc0Q7SUFDdEQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUUsR0FBaUI7UUFDcEMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFZTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxXQUFXLENBQUUsT0FBWSxFQUFFLFlBQW9CO1FBQ3BELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxrREFBa0QsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNySixDQUFDO0lBRU0sSUFBSSxDQUFFLElBQVk7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxtQkFBbUIsQ0FBRSxNQUFjLEVBQUUsR0FBRyxJQUFXO1FBQ3pELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDZDQUE2QyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVPLHdCQUF3QixDQUFFLE1BQWMsRUFBRSxHQUFHLElBQVc7UUFDOUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsbURBQW1ELEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNySCxDQUFDO0NBQ0Y7QUFFWSxtQkFBVyxHQUFHLENBQ3pCLGVBQXVCLEVBQUUsUUFBZ0IsRUFBRSxZQUFxQixFQUFFLG9CQUE2QixFQUMvRixFQUFFO0lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtRQUNqRCxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEtBQUssR0FBRztZQUNiLDJDQUFtQixDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztLQUNIO0lBRUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1FBQ3pCLGlFQUFpRTtRQUNoRSxNQUFjLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBWSxFQUFFLFNBQWtCLEVBQUUsUUFBaUI7WUFDbEYsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QztZQUNELE1BQU0sT0FBTyxHQUFHLDJDQUFtQixDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hJLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7UUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1QztJQUVELGtDQUFrQztJQUNsQyxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1FBQzdDLDJDQUFtQixDQUFDLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxVQUMxRCxNQUFNLEVBQUUsUUFBZ0IsRUFBRSxPQUFZLEVBQUUsWUFBb0I7WUFFNUQsK0VBQStFO1lBQy9FLG9CQUFvQjtZQUNwQixFQUFFO1lBQ0YsMERBQTBEO1lBQzFELGdFQUFnRTtZQUNoRSwyQkFBMkI7WUFDM0IsTUFBTSxLQUFLLEdBQVEsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFekMsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDckIsS0FBSyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7WUFDNUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUxQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQXFCLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUc7WUFDcEIsMkNBQW1CLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUc7WUFDdkIsMkNBQW1CLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsVUFBVSxNQUFjO1lBQzFDLDJDQUFtQixDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDOUMsR0FBRyxFQUFFO2dCQUNILE9BQU8sMkNBQW1CLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDL0UsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1FBQzNCLDJFQUEyRTtRQUMzRSx3RUFBd0U7UUFDeEUsMkJBQTJCO1FBQzNCLEVBQUU7UUFDRixxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHVEQUF1RDtRQUN2RCxJQUFJLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEUsd0NBQXdDO1FBQ3hDLDJDQUFtQixDQUFDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxVQUFVLE1BQU0sRUFBRSxlQUFnQztZQUNwSCxJQUFJLHFCQUFxQixLQUFLLGVBQWUsRUFBRTtnQkFDN0MscUJBQXFCLEdBQUcsZUFBZSxDQUFDO2dCQUN4QyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsOEVBQThFO1FBQzlFLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/init.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/init.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100764,"message":"SourceMap: mapping webpack:///lib/renderer/inspector.ts => /Users/roblou/code/vscode/lib/renderer/inspector.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100764,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/inspector.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/inspector.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/inspector.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100766,"message":"SourceMap: mapping webpack:///lib/renderer/ipc-renderer-internal-utils.ts => /Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal-utils.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100766,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/ipc-renderer-internal-utils.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal-utils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal-utils.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100767,"message":"SourceMap: mapping webpack:///lib/renderer/ipc-renderer-internal.ts => /Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100767,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/ipc-renderer-internal.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100769,"message":"SourceMap: mapping webpack:///lib/renderer/security-warnings.ts => /Users/roblou/code/vscode/lib/renderer/security-warnings.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100769,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/security-warnings.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/security-warnings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/security-warnings.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100771,"message":"SourceMap: mapping webpack:///lib/renderer/web-frame-init.ts => /Users/roblou/code/vscode/lib/renderer/web-frame-init.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100771,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/web-frame-init.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/web-frame-init.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/web-frame-init.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100772,"message":"SourceMap: mapping webpack:///lib/renderer/web-view/guest-view-internal.ts => /Users/roblou/code/vscode/lib/renderer/web-view/guest-view-internal.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100773,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/web-view/guest-view-internal.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsK0JBQStCO0FBQ25FO0FBQ0E7QUFDQSxzQkFBc0IsMENBQTBDO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9EQUFvRCxtQkFBbUI7O0FBRXZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCxpQkFBaUIseUJBQXlCO0FBQzFDLFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLGtGQUEyQztBQUNyRCxJQUFJLG1CQUFPLENBQUMsb0ZBQTRDOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDdldBLDZEQUFzQztBQUV0QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXJELE1BQU0sUUFBUyxTQUFRLHFCQUFZO0lBQ2pDLFlBQW9CLE9BQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBR2pDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQkFBb0IsQ0FBRSxHQUFHLElBQWdCO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsbUJBQW1CLENBQUUsR0FBRyxJQUFnQjtRQUN0QyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGVBQWUsQ0FBRSxHQUFHLElBQWdCO1FBQ2xDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCx3QkFBd0I7QUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLEVBQUU7SUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSw0Q0FBNEM7UUFDdkUscUVBQXFFO1FBQ3JFLDBCQUEwQjtRQUN6QixRQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsSUFBZ0I7WUFDL0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztLQUNIO0NBQ0Y7QUFFRCwwREFBMEQ7QUFDMUQscUVBQXFFO0FBQ3JFLFNBQVMsV0FBVyxDQUFFLE9BQWU7SUFDbkMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXZDLGtCQUFlLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BFekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxNQUFhLGlCQUFpQjtJQUE5QjtRQUNVLFdBQU0sR0FBVyxDQUFDO1FBQ2xCLGNBQVMsR0FBNkIsRUFBRTtJQWtEbEQsQ0FBQztJQWhEQyxHQUFHLENBQUUsUUFBa0I7UUFDckIsaUNBQWlDO1FBQ2pDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQVMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9ELElBQUksRUFBRSxJQUFJLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFFdEIsb0VBQW9FO1FBQ3BFLHFEQUFxRDtRQUNyRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUV6QixJQUFJLGVBQWUsQ0FBQztRQUNwQixJQUFJLEtBQUssQ0FBQztRQUVWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFBRSxTQUFTO1lBQzVDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQUUsU0FBUztZQUNqRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO2dCQUFFLFNBQVM7WUFFakQsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLElBQUksR0FBRztnQkFBRSxlQUFlLEdBQUcsR0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE1BQU07U0FDUDtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDN0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsR0FBRyxDQUFFLEVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksY0FBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBRSxFQUFVLEVBQUUsR0FBRyxJQUFXO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBRSxFQUFVO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxRQUFRLEVBQUU7WUFDWixNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7Q0FDRjtBQXBERCw4Q0FvREM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0REQsd0pBQXdGO0FBQ3hGLDZKQUE0RjtBQUM1RixrREFBMkI7QUFFM0IsOEhBQXFFO0FBRXJFLE1BQU0sR0FBRztJQUdQLFlBQWEsS0FBYTtRQUN4QixJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGFBQWE7SUFLakIsWUFBYSxLQUFhLEVBQUUsV0FBbUI7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxzQkFBc0IsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBRUQsTUFBTSxJQUFJO0lBTVIsWUFBb0IsS0FBYSxFQUFTLE1BQWMsRUFBRSxXQUFtQixFQUFTLElBQVk7UUFBOUUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBOEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUwzRixpQkFBWSxHQUFZLEtBQUs7UUFDN0IsaUJBQVksR0FBRyxJQUFJLGFBQUssRUFBRTtRQUMxQixjQUFTLEdBQUcsSUFBSSxhQUFLLEVBQUU7UUFJNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGFBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVwRCwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCwyQ0FBbUIsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLE1BQU0sRUFBRSxFQUFFLENBQzFELE1BQXNCLEVBQUUsT0FBWSxFQUNwQyxFQUFFO1lBQ0YsTUFBTSxZQUFZLEdBQUcsY0FBYyxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUU5QiwyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwwQkFBMEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUUsT0FBWTtRQUN2QiwyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwyQkFBMkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLDJDQUFtQixDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELHFDQUFxQztBQUNyQyxTQUFnQixRQUFRLENBQUUsV0FBbUIsRUFBRSxPQUFZO0lBQ3pELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFFckQsMkNBQW1CLENBQUMsRUFBRSxDQUFDLDRCQUE0QixXQUFXLEVBQUUsRUFBRSxDQUNoRSxNQUFzQixFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsV0FBNkIsRUFDcEYsRUFBRTtRQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQztJQUVILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsV0FBVyxFQUFFLEVBQUUsQ0FDakUsTUFBc0IsRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUN0RCxFQUFFO1FBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsMkNBQW1CLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLENBQUMsTUFBc0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtRQUN4RixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLE1BQXNCLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDeEYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE9BQU8sR0FBRztRQUNmLEVBQUUsRUFBRSxXQUFXO1FBRWYsZ0VBQWdFO1FBQ2hFLE1BQU0sRUFBRSxVQUFVLElBQVk7WUFDNUIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNoQixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsV0FBVztnQkFDckIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLFdBQVcsRUFBRTtZQUNYLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN2RixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sQ0FBRSxHQUFHLElBQWdCO1lBQzFCLDJCQUEyQjtZQUMzQixJQUFJLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztZQUNwQyxJQUFJLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDTCxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3pDO1lBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDaEgsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxXQUFXLENBQUUsR0FBRyxJQUFnQjtZQUM5QiwyQkFBMkI7WUFDM0IsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7WUFDdEMsSUFBSSxPQUFlLENBQUM7WUFDcEIsSUFBSSxPQUEyQixDQUFDO1lBQ2hDLElBQUksZ0JBQWdCLEdBQW9DLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztZQUVqRSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUMvQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDL0I7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQzthQUNsQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUMvQjtxQkFBTTtvQkFDTCxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2FBQ0Y7aUJBQU07Z0JBQ0wsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN4QztZQUVELElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQzthQUM1QztZQUVELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsU0FBUyxFQUFFLElBQUksYUFBSyxFQUFFO1FBQ3RCLFNBQVMsRUFBRSxJQUFJLGFBQUssRUFBRTtRQUN0QixXQUFXLEVBQUUsSUFBSSxhQUFLLEVBQUU7S0FDekIsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixvRUFBb0U7UUFDcEUsYUFBYSxDQUNYLEtBQWEsRUFDYixPQUF5QyxFQUN6QyxpQkFBb0QsR0FBRyxFQUFFLEdBQUUsQ0FBQztZQUU1RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7aUJBQy9FLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxrRUFBa0U7UUFDbEUsV0FBVyxDQUNULEtBQWEsRUFDYixPQUFZLEVBQ1osUUFBd0MsRUFDeEMsbUJBQW9ELEdBQUcsRUFBRSxHQUFFLENBQUM7WUFFNUQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUcsQ0FBQztRQUVELFNBQVMsRUFBRSxJQUFJLGFBQUssRUFBRTtRQUN0QixTQUFTLEVBQUUsSUFBSSxhQUFLLEVBQUU7UUFDdEIsU0FBUyxFQUFFLElBQUksYUFBSyxFQUFFO0tBQ3ZCLENBQUM7SUFFRixNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07UUFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1FBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUztLQUNwQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBTyxDQUFDLDRGQUFnRCxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlGLE1BQU0sQ0FBQyxVQUFVLEdBQUc7UUFDbEIsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQztRQUNWLFFBQVEsS0FBSyxDQUFDO1FBQ2QsUUFBUSxLQUFLLENBQUM7UUFDZCxPQUFPLEtBQUssQ0FBQztRQUNiLFFBQVEsS0FBSyxDQUFDO1FBQ2QsUUFBUSxLQUFLLENBQUM7S0FDZixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRyxtQkFBTyxDQUFDLHNGQUE2QyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsbUJBQU8sQ0FBQywwR0FBdUQsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRWhHLDZGQUE2RjtJQUM3RixNQUFNLENBQUMsYUFBYSxHQUFHO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2IsUUFBUSxLQUFLLENBQUM7S0FDZixDQUFDO0FBQ0osQ0FBQztBQXpKRCw0QkF5SkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3TkQsaUdBQW9DO0FBRXBDLDZKQUE0RjtBQUU1RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxELE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkI7OztPQUdHO0lBQ0gseUJBQXlCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Q0FDbkMsQ0FBQztBQUVGLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7QUFDbEUsTUFBTSxnQkFBZ0IsR0FBd0MsRUFBRSxDQUFDO0FBRWpFLG9IQUFvSDtBQUNwSCxNQUFNLDZCQUE2QixHQUFHLEdBQUcsRUFBRTtJQUN6QyxnREFBZ0Q7SUFDaEQsT0FBTyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLFVBQVUsT0FBZTtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsaUNBQWlDO0FBQ2pDLHlEQUF5RDtBQUN6RCxNQUFNLGNBQWMsR0FBRyxVQUFVLE9BQWU7SUFDOUMsSUFBSSxPQUFPLEtBQUssWUFBWTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRixNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLDJDQUEyQztBQUMzQyxNQUFNLGdCQUFnQixHQUFHLFVBQXFCLFdBQW1CLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDMUYsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUMzQyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLDZCQUE2QixFQUFFLENBQUMsQ0FBQztJQUVwRSxrRUFBa0U7SUFDbEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUVuRSxtQkFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtRQUNyQyxJQUFJLEVBQUUsR0FBRyxXQUFXLEtBQUssT0FBTyxHQUFHO1FBQ25DLDhFQUE4RTtRQUM5RSx5Q0FBeUM7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sbUJBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLE9BQXNDLEVBQUUsV0FBbUI7SUFDL0YsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRTtRQUNuQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkQ7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxVQUFxQixHQUFXLEVBQUUsSUFBWTtJQUNsRSxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsR0FBa0M7SUFDbkUsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUMvQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkM7QUFDSCxDQUFDLENBQUM7QUFFRix3QkFBd0I7QUFDeEIsMERBQTBEO0FBQzFELE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxXQUFtQixFQUFFLE1BQThCO0lBQ3ZGLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFBRSxPQUFPO0lBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFBRSxPQUFPO0lBRWpELElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtRQUNiLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLEVBQUU7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN0QzthQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxjQUFjLEVBQUU7WUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNyRDtLQUNGO0lBRUQsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGdCQUFnQixFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDckQ7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLHVEQUF1RDtBQUN2RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsVUFDcEQsS0FBcUIsRUFDckIsV0FBbUIsRUFDbkIsR0FBVyxFQUNYLElBQVk7SUFFWixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFzQyxFQUFFLEVBQUU7SUFDMUQsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUU7UUFDM0IsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3hCLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDekMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNoRDtTQUNGO0tBQ0Y7QUFDSCxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0SEYsTUFBYSxLQUFLO0lBQWxCO1FBQ1UsY0FBUyxHQUFlLEVBQUU7SUFrQnBDLENBQUM7SUFoQkMsV0FBVyxDQUFFLFFBQWtCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUUsUUFBa0I7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBRSxHQUFHLElBQVc7UUFDbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztDQUNGO0FBbkJELHNCQW1CQzs7Ozs7Ozs7Ozs7Ozs7QUNuQkQsMkNBQTJDO0FBQzNDLGlFQUFpRTtBQUNqRSxFQUFFO0FBQ0YsMENBQTBDO0FBQzFDLG1FQUFtRTs7QUFFbkUsNkpBQTRGO0FBTzVGLE1BQU0sV0FBVyxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO0lBQzFDLElBQUk7UUFDRixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQVMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUMvQjtJQUFDLFdBQU07UUFDTixPQUFPLEVBQUUsQ0FBQztLQUNYO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUF1QixFQUFFLEVBQUU7SUFDaEYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM5QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBZSxFQUFFLFlBQXlDLEVBQUUsYUFBZ0MsRUFBRSxFQUFFO0lBQzNILElBQUksT0FBTyxhQUFhLEtBQUssUUFBUTtRQUFFLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUFFLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFFdEQsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUNqRCxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTyxHQUFHLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sNEJBQTRCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsV0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXVCLEVBQUUsRUFBRTtJQUN2RixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3hDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztLQUNsRTtBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUU7SUFDdEMsT0FBTztRQUNMLFVBQVUsQ0FBRSxXQUFtQixFQUFFLGFBQXVCO1lBQ3RELE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDN0QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQzNERiw2SkFBNEY7QUFFNUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsUUFBa0IsRUFBRSxFQUFFO0lBQ2xGLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVTtRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVoRixnQkFBZ0IsQ0FBQyxNQUFNLENBQVMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQztTQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsK0NBQStDO1lBQy9DLHdEQUF3RDtZQUN4RCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CLEVBQUUsT0FBNEIsRUFBRSxRQUFrQixFQUFFLEVBQUU7SUFDaEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUM7U0FDNUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULElBQUksUUFBUTtZQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFdBQW1CLEVBQUUsV0FBbUIsRUFBRSxFQUFFO0lBQ3JFLE9BQU87UUFDTCxHQUFHLENBQUUsSUFBYyxFQUFFLFFBQWtCO1lBQ3JDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFO2dCQUNwRSxJQUFJLElBQUksSUFBSSxJQUFJO29CQUFFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLFFBQVEsR0FBd0IsRUFBRSxDQUFDO2dCQUN2QyxRQUFRLE9BQU8sSUFBSSxFQUFFO29CQUNuQixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2QsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ3hCLFFBQVEsR0FBRyxJQUFJLENBQUM7NEJBQ2hCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUMxQjt3QkFDRCxNQUFNO2lCQUNUO2dCQUVELCtDQUErQztnQkFDL0Msd0RBQXdEO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFBRSxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFM0MsTUFBTSxLQUFLLEdBQXdCLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pCLElBQUksS0FBSyxJQUFJLElBQUk7d0JBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEdBQUcsQ0FBRSxLQUEwQixFQUFFLFFBQWtCO1lBQ2pELFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFO2dCQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckUsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sQ0FBRSxJQUFjLEVBQUUsUUFBa0I7WUFDeEMsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUE0QixFQUFFLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssQ0FBRSxRQUFrQjtZQUN2QixVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFVyxhQUFLLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQzVDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0NBQy9DLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDckZILDhIQUFxRTtBQUVyRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBTyxDQUFDLGtHQUFtRCxDQUFDLENBQUM7QUFFN0YsTUFBTSxhQUFhO0lBSWpCO1FBSFEscUJBQWdCLEdBQUcsSUFBSSxhQUFLLEVBQUU7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLGFBQUssRUFBRTtRQUcvQixtQkFBbUIsQ0FBQyxFQUFFLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE9BQVksRUFBRSxFQUFFO1lBQ3BHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxLQUFtQixFQUFFLE9BQVksRUFBRSxFQUFFO1lBQy9GLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRVksYUFBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQ25CL0MsNkRBQXNDO0FBQ3RDLHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxnRkFBZ0Y7QUFDaEYsMERBQTBEO0FBQzFELEVBQUU7QUFDRiw4RUFBOEU7QUFDOUUsa0NBQWtDO0FBQ2xDLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUscUVBQXFFO0FBQ3JFLDZFQUE2RTtBQUM3RSx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLDJFQUEyRTtBQUMzRSx5RUFBeUU7QUFDekUseUVBQXlFO0FBQ3pFLE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDZix5RkFBeUY7UUFDekYsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxzRUFBc0U7SUFDdEUsc0VBQXNFO0NBQ3ZFLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsdUNBQXVDO0FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUUxQixzQkFBc0I7QUFFdEIsbUJBQU8sQ0FBQyx3RUFBOEIsQ0FBQyxDQUFDO0FBRXhDLDBCQUEwQjtBQUMxQixtQkFBTyxDQUFDLDREQUFnQyxDQUFDLENBQUM7QUFFMUMsZ0VBQWdFO0FBQ2hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxxQkFBWSxFQUFFLENBQUM7QUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUM5QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDakQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFFbEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0lBQ3pDLFNBQVMsQ0FBRSxRQUFpQixFQUFFLE9BQWUsRUFBRSxJQUFXLEVBQUUsUUFBZ0I7UUFDMUUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILGlEQUFpRDtBQUNqRCxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBTyxDQUFDLGtHQUFtRCxDQUFDLENBQUM7QUFDN0YsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBTyxDQUFDLDhHQUF5RCxDQUFDLENBQUM7QUFDNUYsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLG1CQUFPLENBQUMsb0ZBQTRDLENBQUMsQ0FBQztBQUMvRSxZQUFZLEVBQUUsQ0FBQztBQUVmLGtDQUFrQztBQUNsQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFOUUsTUFBTSxXQUFXLEdBQUcsVUFDbEIsSUFBWSxFQUFFLFlBQWUsRUFBRSxTQUFnQztJQUUvRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQ0EsU0FBUztZQUNQLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQ3pCO1FBQ0QsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM1QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUU3RCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBYSxDQUFDO0FBQzVHLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFMUUsZ0RBQWdEO0FBQ2hELE1BQU0saUJBQWlCLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0FBRWpILDhFQUE4RTtBQUM5RSxJQUFJLGFBQWEsRUFBRTtJQUNqQixjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0NBQ3BDO0FBRUQsUUFBUSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ2hCLGdDQUFnQztRQUNoQyxtQkFBTyxDQUFDLDBFQUF1QyxDQUFDLENBQUM7UUFDakQsTUFBTTtLQUNQO0lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hCLDBEQUEwRDtRQUMxRCxtQkFBTyxDQUFDLDRFQUF3QyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLE1BQU07S0FDUDtJQUNELEtBQUssU0FBUztRQUNaLE1BQU07SUFDUixPQUFPLENBQUMsQ0FBQztRQUNQLGtDQUFrQztRQUNsQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxnRkFBMEMsQ0FBQyxDQUFDO1FBQzVFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNFLDBCQUEwQjtRQUMxQixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQWtDLENBQUM7UUFDcEgsbUJBQU8sQ0FBQyx3R0FBc0QsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pGO0NBQ0Y7QUFFRCxtQ0FBbUM7QUFDbkMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO0lBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxtQkFBTyxDQUFDLG9HQUFvRCxDQUFDLENBQUM7SUFDdEYsV0FBVyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztDQUM1RDtBQUVELHVDQUF1QztBQUN2QyxJQUFJLGdCQUFnQixFQUFFO0lBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDLENBQUM7Q0FDekU7QUFFRCxJQUFJLGVBQWUsRUFBRTtJQUNuQixrQ0FBa0M7SUFDbEMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBdUIsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFDLHNCQUFzQjtJQUM5RyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsdUVBQXVFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUVqQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ2hDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7Z0JBQUUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkQsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsSUFBSSx5QkFBeUIsRUFBRTtnQkFDN0IsUUFBUSxHQUFHLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQzthQUM3QztTQUNGO1FBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRCxrRUFBa0U7UUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUUzQyw4Q0FBOEM7UUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqRTtTQUFNO1FBQ0wsMkRBQTJEO1FBQzNELE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0YsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpGLElBQUksT0FBTyxFQUFFO1lBQ1gsNENBQTRDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4RDtLQUNGO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSztRQUNwRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELCtEQUErRDtZQUMvRCxrRUFBa0U7WUFDbEUsWUFBWTtZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUEwQixFQUFFLEtBQVksQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUM7Q0FDSDtLQUFNO0lBQ0wsbUVBQW1FO0lBQ25FLG1DQUFtQztJQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0IsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0tBQ0o7Q0FDRjtBQUVELE1BQU0sVUFBVSxHQUFHLG1CQUFPLENBQUMsMEVBQXVDLENBQUMsQ0FBQztBQUVwRSw0QkFBNEI7QUFDNUIsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUU7SUFDMUMsSUFBSTtRQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDN0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN4RztDQUNGO0FBRUQsNkJBQTZCO0FBQzdCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtJQUN2QixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxtQkFBTyxDQUFDLDBGQUErQyxDQUFDLENBQUM7SUFDdEYsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDbkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0TkQsMEtBQTZGO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLEdBQUc7SUFDZCxxQ0FBcUM7SUFDckMsTUFBTSxDQUFDLHFCQUFzQixDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztJQUVsRSwwREFBMEQ7SUFDMUQsTUFBTSxDQUFDLFdBQVksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBRXpFLGtEQUFrRDtJQUNsRCxNQUFNLENBQUMsRUFBRyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLGtFQUFrRTtBQUNsRSxTQUFTLFdBQVcsQ0FBRSxPQUFlLEVBQUUsSUFBWTtJQUNqRCxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELCtEQUErRDtBQUM5RCxNQUFNLENBQUMsT0FBZSxHQUFHLFVBQVUsT0FBZSxFQUFFLEtBQWE7SUFDaEUsT0FBTyx3Q0FBVSxDQUFDLDRCQUE0QixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQVksQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUF3QjtJQUMvRSxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztRQUNsRixPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTztZQUNqQyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7WUFDOUIsT0FBdUIsQ0FBQyxpQkFBaUIsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUF3QjtJQUN6RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELG9DQUFNLENBQVMsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM3RSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUMxQixNQUFNLENBQUMsV0FBWSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsTUFBTSxDQUFDLFdBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLFFBQThCO0lBQ3BFLG9DQUFNLENBQWtCLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUM5RSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDaEIsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLFVBQVUsSUFBWSxFQUFFLElBQVM7SUFDN0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsVUFBcUIsUUFBb0I7SUFDekUsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzNDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUMzREYsd0pBQXdGO0FBQ3hGLG1IQUFvRTtBQUl2RCxjQUFNLEdBQUcsVUFBaUMsT0FBZSxFQUFFLE9BQVU7SUFDaEYsMkNBQW1CLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRTtRQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDdEQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxhQUFhLFNBQVMsRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmLFNBQWdCLE1BQU0sQ0FBSyxPQUFlLEVBQUUsR0FBRyxJQUFXO0lBQ3hELE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsRUFBRSxNQUFNLENBQUM7UUFDM0IsMkNBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxhQUFhLFNBQVMsRUFBRSxFQUFFLENBQzNELE1BQU0sRUFBRSxLQUErQixFQUFFLE1BQVcsRUFDcEQsRUFBRTtZQUNGLElBQUksS0FBSyxFQUFFO2dCQUNULE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCwyQ0FBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWRELHdCQWNDO0FBRUQsU0FBZ0IsVUFBVSxDQUFLLE9BQWUsRUFBRSxHQUFHLElBQVc7SUFDNUQsTUFBTSxDQUFFLEtBQUssRUFBRSxNQUFNLENBQUUsR0FBRywyQ0FBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRS9FLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO1NBQU07UUFDTCxPQUFPLE1BQU0sQ0FBQztLQUNmO0FBQ0gsQ0FBQztBQVJELGdDQVFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDNUNELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxzQkFBc0I7QUFDVCwyQkFBbUIsR0FBaUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDL0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRXRCLDJCQUFtQixDQUFDLElBQUksR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDbkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLFFBQVEsR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDdkQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLE1BQU0sR0FBRyxVQUFVLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3BFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGLDJCQUFtQixDQUFDLFNBQVMsR0FBRyxVQUFVLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCRixpR0FBb0M7QUFDcEMsMEtBQWlGO0FBRWpGLElBQUksU0FBUyxHQUFtQixJQUFJLENBQUM7QUFFckMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRTVDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtRQUN0QixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssUUFBUTtZQUNYLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuQyxRQUFRLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDbkUsTUFBTTtRQUNSLEtBQUssU0FBUyxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0MsTUFBTTtRQUNSLEtBQUssT0FBTztZQUNWLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEQsTUFBTTtRQUNSO1lBQ0UsU0FBUyxHQUFHLEtBQUssQ0FBQztLQUNyQjtJQUVELElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGtDQUFrQyxDQUFDO1FBQy9DLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFO1FBQ3pELFNBQVMsR0FBRyxLQUFLLENBQUM7S0FDbkI7SUFFRCxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztRQUM5QyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsaUNBQWlDLENBQUMsRUFBRTtRQUN4RCxTQUFTLEdBQUcsSUFBSSxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixPQUFPLG1CQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxJQUFJO1lBQ0YsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7U0FDNUQ7UUFBQyxXQUFNO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRzs7MEJBRUUsQ0FBQztBQUUzQjs7Ozs7R0FLRztBQUNILE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO1FBQzFFLE9BQU87S0FDUjtJQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXO1NBQ2pDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztTQUM1QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZELE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUM7U0FDNUQsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZCxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3hDLE9BQU87S0FDUjtJQUVELE1BQU0sT0FBTyxHQUFHOzttRUFFaUQsU0FBUztNQUN0RSxlQUFlLEVBQUUsQ0FBQztJQUV0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxFQUM3RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sOEJBQThCLEdBQUcsVUFBVSxlQUF3QjtJQUN2RSxJQUFJLENBQUMsZUFBZSxJQUFJLFdBQVcsRUFBRTtRQUFFLE9BQU87SUFFOUMsSUFBSSxtQkFBbUIsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sT0FBTyxHQUFHO2lEQUM2QixNQUFNLENBQUMsUUFBUTsyREFDTCxlQUFlLEVBQUUsQ0FBQztRQUV6RSxPQUFPLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxFQUNsRixvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSw2RUFBNkU7QUFDN0UsRUFBRTtBQUNGLGtGQUFrRjtBQUNsRixzRkFBc0Y7QUFFdEY7Ozs7R0FJRztBQUNILE1BQU0sNEJBQTRCLEdBQUcsVUFBVSxjQUF3QztJQUNyRixJQUFJLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEtBQUssS0FBSztRQUFFLE9BQU87SUFFcEUsTUFBTSxPQUFPLEdBQUc7eURBQ3VDLGVBQWUsRUFBRSxDQUFDO0lBRXpFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQy9ELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixNQUFNLE9BQU8sR0FBRzs7K0NBRTJCLGVBQWUsRUFBRSxDQUFDO1FBRTdELE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEVBQzNFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sK0JBQStCLEdBQUcsVUFBVSxjQUF3QztJQUN4RixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLDJCQUEyQjtRQUFFLE9BQU87SUFFM0UsTUFBTSxPQUFPLEdBQUc7O0lBRWQsZUFBZSxFQUFFLENBQUM7SUFFcEIsT0FBTyxDQUFDLElBQUksQ0FBQywyREFBMkQsRUFDdEUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsVUFBVSxjQUF3QztJQUN0RixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsRUFBRTtRQUM3RCxPQUFPO0tBQ1I7SUFFRCxNQUFNLE9BQU8sR0FBRzs7MENBRXdCLGVBQWUsRUFBRSxDQUFDO0lBRTFELE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQy9ELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLDRCQUE0QixHQUFHLFVBQVUsY0FBd0M7SUFDckYsSUFBSSxDQUFDLGNBQWM7UUFDakIsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDO1FBQ3JELENBQUMsY0FBYyxDQUFDLG1CQUFtQixJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDekYsT0FBTztLQUNSO0lBRUQsTUFBTSxPQUFPLEdBQUc7OytDQUU2QixlQUFlLEVBQUUsQ0FBQztJQUUvRCxPQUFPLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxFQUM5RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUMsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUc7OztNQUdkLGVBQWUsRUFBRSxDQUFDO1FBRXBCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQ3RELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLCtDQUErQztBQUMvQyxvQ0FBb0M7QUFDcEMsaURBQWlEO0FBQ2pELHlEQUF5RDtBQUV6RCxvREFBb0Q7QUFDcEQsaURBQWlEO0FBRWpELE1BQU0sc0NBQXNDLEdBQUcsVUFBVSxjQUF3QztJQUMvRixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsRUFBRTtRQUFFLE9BQU87SUFFbkYsSUFBSSxtQkFBbUIsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sT0FBTyxHQUFHO2lEQUM2QixNQUFNLENBQUMsUUFBUTtnRUFDQSxlQUFlLEVBQUUsQ0FBQztRQUU5RSxPQUFPLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxFQUM3RCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxtQ0FBbUM7QUFFbkMsTUFBTSxtQkFBbUIsR0FBRyxVQUMxQixjQUFtRCxFQUFFLGVBQXdCO0lBRTdFLDhCQUE4QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLDBCQUEwQixFQUFFLENBQUM7SUFDN0IsK0JBQStCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsNkJBQTZCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0Msb0JBQW9CLEVBQUUsQ0FBQztJQUN2QixzQkFBc0IsRUFBRSxDQUFDO0lBQ3pCLHNDQUFzQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSztJQUM3QixJQUFJO1FBQ0YsT0FBTyxvQ0FBTSxDQUEwQiwyQ0FBMkMsQ0FBQyxDQUFDO0tBQ3JGO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzFEO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsZ0JBQWdCLENBQUUsZUFBd0I7SUFDeEQsTUFBTSxXQUFXLEdBQUcsS0FBSztRQUN2QixJQUFJLHlCQUF5QixFQUFFLEVBQUU7WUFDL0IsTUFBTSxjQUFjLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELG1CQUFtQixDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQVJELDRDQVFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDM1RELGlHQUE4QztBQUM5Qyw2SkFBNEY7QUFRL0Usb0JBQVksR0FBRyxHQUFHLEVBQUU7SUFDL0IsdUJBQXVCO0lBQ3ZCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyw2Q0FBNkMsRUFBRSxDQUNyRSxLQUFLLEVBQUUsTUFBNEIsRUFBRSxHQUFHLElBQVcsRUFDbkQsRUFBRTtRQUNGLDREQUE0RDtRQUM1RCxrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELE9BQVEsbUJBQVEsQ0FBQyxNQUFNLENBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNuQkYsaUdBQXFEO0FBQ3JELHdKQUF3RjtBQUN4RiwwS0FBNkY7QUFJN0YsTUFBTSxlQUFlLEdBQWtDO0lBQ3JELGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7SUFDckMsWUFBWSxFQUFFLEVBQUU7SUFDaEIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixlQUFlLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNySCx1QkFBdUIsRUFBRSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUM1RSxtQkFBbUIsRUFBRSxFQUFFO0lBQ3ZCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsV0FBVyxFQUFFLEVBQUU7SUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUMzRCxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDMUIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDO0lBQzVELGVBQWUsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QixzQkFBc0IsRUFBRSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQy9GLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUM3RCxvQkFBb0IsRUFBRSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEgsc0JBQXNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQ2xGLGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQztJQUM1QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFNBQVMsRUFBRSxFQUFFO0lBQ2IsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO0lBQ3JDLFdBQVcsRUFBRSxFQUFFO0lBQ2Ysb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQzlDLHNCQUFzQixFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3BDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsd0JBQXdCLEVBQUUsRUFBRTtJQUM1Qix1QkFBdUIsRUFBRSxFQUFFO0lBQzNCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUMzQix3QkFBd0IsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUN4QyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssQ0FBQztDQUM3QixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBMkI7SUFDaEQsb0JBQW9CLEVBQUUsZ0JBQWdCO0NBQ3ZDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxVQUNwQixPQUFvQixFQUFFLFNBQWlCLEVBQUUsUUFBZ0IsRUFBRSxHQUFHLElBQWdCO0lBRTlFLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3hDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDekU7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQWtDLENBQUM7SUFDdkUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMvQyxRQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEMsSUFBSSxTQUFTLEtBQUssYUFBYSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDaEM7U0FBTSxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7UUFDdkMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQ3pCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsY0FBYyxDQUFFLE9BQW9CLEVBQUUsY0FBc0I7SUFDMUUsMkNBQW1CLENBQUMsRUFBRSxDQUFDLDhDQUE4QyxjQUFjLEVBQUUsRUFBRTtRQUNyRixPQUFPLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztRQUNwQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQywrQ0FBK0MsY0FBYyxFQUFFLEVBQUUsVUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSTtRQUN6SCxhQUFhLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILDJDQUFtQixDQUFDLEVBQUUsQ0FBQyw0Q0FBNEMsY0FBYyxFQUFFLEVBQUUsVUFBVSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNwSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQW9CLENBQUM7UUFDN0QsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDM0IsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFuQkQsd0NBbUJDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUUsY0FBc0I7SUFDdEQsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsOENBQThDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkcsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsK0NBQStDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDeEcsMkNBQW1CLENBQUMsa0JBQWtCLENBQUMsNENBQTRDLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDdkcsQ0FBQztBQUpELDRDQUlDO0FBRUQsU0FBZ0IsV0FBVyxDQUFFLE1BQTJCO0lBQ3RELE9BQU8sb0NBQU0sQ0FBQywwQ0FBMEMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixlQUFlLENBQUUsTUFBMkI7SUFDMUQsT0FBTyx3Q0FBVSxDQUFDLDBDQUEwQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFGRCwwQ0FFQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsaUJBQXlCLEVBQUUsZUFBdUIsRUFBRSxNQUEyQixFQUFFLGFBQXFCO0lBRXRHLE1BQU0sZUFBZSxHQUFJLG1CQUE4QyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRyxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxnQ0FBZ0M7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzNDO0lBQ0Qsb0NBQU0sQ0FBQywwQ0FBMEMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xILENBQUM7QUFSRCxrQ0FRQztBQUVZLCtCQUF1QixHQUFHO0lBQ3JDLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZUFBZTtJQUNmLFdBQVc7Q0FDWixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUNySEYsNkpBQTRGO0FBQzVGLGtKQUFpRjtBQUdqRixtREFBbUQ7QUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQW1CO0lBQzlDLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBTUYscUJBQXFCO0FBQ3JCLGlEQUFpRDtBQUNqRCxNQUFNLGdCQUFnQjtJQUlwQixZQUFvQixJQUFZLEVBQVMsV0FBd0I7UUFBN0MsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjFELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBdUM5Qiw2Q0FBNkM7UUFDdEMsbUJBQWMsR0FBc0MsR0FBRyxFQUFFLENBQUMsU0FBZ0I7UUFyQy9FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUksV0FBVyxDQUFDLFdBQW1DLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM1RSxDQUFDO0lBRUQsOEJBQThCO0lBQ3ZCLFFBQVEsQ0FBRSxLQUFVO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQseUVBQXlFO0lBQ2xFLHNCQUFzQixDQUFFLEtBQVU7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsNERBQTREO0lBQ3JELGNBQWM7UUFDbkIsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEUsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBSUY7QUFFRCw2Q0FBNkM7QUFDN0MsTUFBTSxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFDN0MsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUSxDQUFFLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7Q0FDRjtBQUVELDZEQUE2RDtBQUM3RCxNQUFNLGtCQUFtQixTQUFRLGdCQUFnQjtJQUcvQyxZQUFvQixXQUF3QjtRQUMxQyxLQUFLLHdDQUF5QyxXQUFXLENBQUMsQ0FBQztRQUR6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUZyQyxxQkFBZ0IsR0FBRyxJQUFJO1FBTXZCLG1CQUFjLEdBQUcsQ0FBQyxRQUFhLEVBQUUsUUFBYSxFQUFFLEVBQUU7WUFDdkQsUUFBUSxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFFMUIsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFO2dCQUMzQyxPQUFPLENBQUMsS0FBSywyR0FBZ0QsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPO2FBQ1I7WUFDRCxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxLQUFLLDRFQUEwRCxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQztJQWZELENBQUM7Q0FnQkY7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxZQUFhLFNBQVEsZ0JBQWdCO0lBR3pDLFlBQW9CLFdBQXdCO1FBQzFDLEtBQUssNEJBQW1DLFdBQVcsQ0FBQyxDQUFDO1FBRG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdUJyQyxtQkFBYyxHQUFHLENBQUMsUUFBYSxFQUFFLFFBQWEsRUFBRSxFQUFFO1lBQ3ZELHFFQUFxRTtZQUNyRSxpRUFBaUU7WUFDakUscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO2dCQUN6QixvRUFBb0U7Z0JBQ3BFLGtFQUFrRTtnQkFDbEUsdUNBQXVDO2dCQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFqQ0MsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRU0sc0JBQXNCLENBQUUsS0FBVTtRQUN2QyxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsMkVBQTJFO1FBQzNFLHNFQUFzRTtRQUN0RSwyRUFBMkU7UUFDM0UsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQWdCRCwwRUFBMEU7SUFDMUUseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSw0QkFBNEI7SUFDckIscUJBQXFCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2pELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUNoQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDO2dCQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRTtvQkFDekIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN6QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUc7WUFDYixVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDN0IsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHVDQUF3QyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xKLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDaEM7WUFDRCxPQUFPO1NBQ1I7UUFFRCwwQkFBMEI7UUFDMUIsTUFBTSxJQUFJLEdBQTJCLEVBQUUsQ0FBQztRQUV4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsNkNBQTJDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkcsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDbEM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsdUNBQXdDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakcsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1QjtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0NBQWtDLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0Y7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFDbEQsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLDhDQUE0QyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0Y7QUFFRCxpQ0FBaUM7QUFDakMsTUFBTSxrQkFBbUIsU0FBUSxnQkFBZ0I7SUFDL0MsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLHdDQUF5QyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFDN0MsWUFBYSxXQUF3QjtRQUNuQyxLQUFLLG9DQUF1QyxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjtRQUVELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxLQUFLLDRHQUF3RCxDQUFDO1lBQ3RFLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDZDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELDZEQUE2RDtBQUM3RCxNQUFNLHNCQUF1QixTQUFRLGdCQUFnQjtJQUNuRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssZ0RBQTZDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLDZCQUE4QixTQUFRLGdCQUFnQjtJQUMxRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssOERBQW9ELFdBQVcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxNQUFNLHVCQUF3QixTQUFRLGdCQUFnQjtJQUNwRCxZQUFhLFdBQXdCO1FBQ25DLEtBQUssa0RBQThDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQUVELE1BQU0sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBQ3hELFlBQWEsV0FBd0I7UUFDbkMsS0FBSywwREFBa0QsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDO0lBQzFFLENBQUM7SUFFTSxRQUFRLENBQUUsS0FBVTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBRUQseUNBQXlDO0FBQ3pDLDJCQUFXLENBQUMsU0FBUyxDQUFDLHNCQUFzQixHQUFHO0lBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksQ0FBQyxVQUFVLHVDQUF3QyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsSUFBSSxDQUFDLFVBQVUsMkJBQWtDLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLFVBQVUsNkNBQTJDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RixJQUFJLENBQUMsVUFBVSx1Q0FBd0MsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLElBQUksQ0FBQyxVQUFVLG1EQUE4QyxHQUFHLElBQUksZ0JBQWdCLG9EQUErQyxJQUFJLENBQUMsQ0FBQztJQUN6SSxJQUFJLENBQUMsVUFBVSx5RUFBeUQsR0FBRyxJQUFJLGdCQUFnQiwwRUFBMEQsSUFBSSxDQUFDLENBQUM7SUFDL0osSUFBSSxDQUFDLFVBQVUsbUNBQXNDLEdBQUcsSUFBSSxnQkFBZ0Isb0NBQXVDLElBQUksQ0FBQyxDQUFDO0lBQ3pILElBQUksQ0FBQyxVQUFVLHlEQUFpRCxHQUFHLElBQUksZ0JBQWdCLDBEQUFrRCxJQUFJLENBQUMsQ0FBQztJQUMvSSxJQUFJLENBQUMsVUFBVSwyQ0FBMEMsR0FBRyxJQUFJLGdCQUFnQiw0Q0FBMkMsSUFBSSxDQUFDLENBQUM7SUFDakksSUFBSSxDQUFDLFVBQVUseURBQWlELEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RyxJQUFJLENBQUMsVUFBVSxtQ0FBc0MsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLElBQUksQ0FBQyxVQUFVLCtDQUE0QyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0YsSUFBSSxDQUFDLFVBQVUsNkRBQW1ELEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsVUFBVSxpREFBNkMsR0FBRyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25HLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUNuU0YsMEVBQTBFO0FBQzFFLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0YsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw0RUFBNEU7O0FBSzVFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBNEIsRUFBRSxXQUFxQyxFQUFFLEVBQUU7SUFDbkcsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUN2RCxPQUFPLE1BQU0sY0FBZSxTQUFRLFdBQVc7UUFHN0MsTUFBTSxLQUFLLGtCQUFrQjtZQUMzQixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7YUFlTixDQUFDO1FBQ0osQ0FBQztRQUVEO1lBQ0UsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsaUJBQWlCO1lBQ2YsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBZSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtnQkFDN0IsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BFLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsVUFBVSwyQkFBa0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvRDtRQUNILENBQUM7UUFFRCx3QkFBd0IsQ0FBRSxJQUFZLEVBQUUsUUFBYSxFQUFFLFFBQWE7WUFDbEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBZSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLDhCQUE4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbkU7UUFDSCxDQUFDO1FBRUQsb0JBQW9CO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQWUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTzthQUNSO1lBQ0QsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVELFFBQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFDNUIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYscUNBQXFDO0FBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLFdBQXFDLEVBQUUsRUFBRTtJQUNyRyw0Q0FBNEM7SUFDNUMsMkJBQTJCO0lBQzNCLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQXNEO0lBRXJILFdBQVcsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFekMsaUVBQWlFO0lBQ2pFLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUE2QyxDQUFDO0lBQzNFLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFjLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUV6Qyw2RUFBNkU7UUFDN0UsWUFBWTtRQUNaLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7UUFDckQsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDO1FBRXpELHdFQUF3RTtRQUN4RSxxQkFBcUI7UUFDckIsb0VBQW9FO1FBQ3BFLE9BQVEsY0FBc0IsQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLDZDQUE2QztBQUNoQyxvQkFBWSxHQUFHLENBQUMsTUFBNEIsRUFBRSxXQUFxQyxFQUFFLEVBQUU7SUFDbEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPO1NBQ1I7UUFFRCxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUIsc0JBQXNCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDckhGLGlHQUE0QztBQUU1Qyw2SkFBNEY7QUFDNUYsZ0tBQThGO0FBRTlGLHFJQUFtRztBQUNuRyxtSEFBbUU7QUFFbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVsRCxnQkFBZ0I7QUFDaEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWYsTUFBTSxTQUFTLEdBQUc7SUFDaEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBYSxXQUFXO0lBa0J0QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpCckMsMEJBQXFCLEdBQUcsSUFBSTtRQUM1QixvQkFBZSxHQUFHLEtBQUs7UUFFdkIsYUFBUSxHQUFHLEtBQUs7UUFNdkIsc0JBQXNCO1FBQ2YsT0FBRSxHQUF3QixFQUFFO1FBR25DLGtDQUFrQztRQUMzQixlQUFVLEdBQXdCLEVBQUU7UUFJekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRSxVQUFVLENBQUMsU0FBUyxHQUFHLHdFQUF3RSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDbEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFN0MsbUNBQW1DO1FBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDdkQsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1lBQzVDLENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBbEJNLHNCQUFzQixLQUFXLENBQUM7SUFvQnpDLHFCQUFxQjtRQUNuQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN0QyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLEtBQUs7UUFDSCx5RUFBeUU7UUFDekUsOEVBQThFO1FBQzlFLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsOEVBQThFO1FBQzlFLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsdUNBQXdDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRWhGLHVFQUF1RTtRQUN2RSxvRUFBb0U7UUFDcEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUVoQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSwwRUFBMEU7SUFDMUUsV0FBVztJQUNYLDhCQUE4QixDQUFFLGFBQXFCLEVBQUUsUUFBYSxFQUFFLFFBQWE7UUFDakYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLEVBQUU7WUFDcEYsT0FBTztTQUNSO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBeUMsQ0FBQztRQUNoRixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsYUFBYSxDQUFFLFlBQTRCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsb0JBQW9CO0lBQ3BCLGtCQUFrQixDQUFFLFNBQWlCO1FBQ25DLE1BQU0sWUFBWSxHQUFHLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFO1lBQzNELEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztpQkFDeEU7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksS0FBSyxFQUFFO29CQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQztZQUNELFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsWUFBWSxDQUFFLFlBQTJDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSwyQkFBa0MsQ0FBQztRQUNqRixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksWUFBWSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsRUFBRTtZQUN2RCw2REFBNkQ7WUFDN0QsZ0VBQWdFO1lBQ2hFLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsVUFBVSwyQkFBa0MsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRjtJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsYUFBYTtRQUNYLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM3RCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFFLGtCQUEwQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLHVDQUF3QyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQXdCO1lBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYztZQUMvQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1NBQzFDLENBQUM7UUFFRixLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkU7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxlQUF1QjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixxRUFBcUU7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXZDLGlCQUFpQixDQUFDLFdBQVcsQ0FDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYyxDQUNwQyxDQUFDO1FBRUYsbUVBQW1FO1FBQ25FLDRCQUE0QjtRQUM1Qix3RUFBd0U7UUFDeEUsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBOUxELGtDQThMQztBQUVZLHVCQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLG1CQUFPLENBQUMsZ0hBQTBELENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRiw0Q0FBNEM7QUFDNUMsMkJBQTJCO0FBQ2Qsb0JBQVksR0FBRyxDQUFDLGNBQXNELEVBQUUsRUFBRTtJQUNyRixjQUFjLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHO1FBQzFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQWMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkdBQTJHLENBQUMsQ0FBQztTQUM5SDtRQUNELE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRiw0Q0FBNEM7SUFDNUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUc7UUFDeEMsSUFBSSxDQUFDLGlCQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFjLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUM3QixRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDNUI7UUFFRCxPQUFRLGlCQUFrQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFnQixDQUFDLENBQUM7SUFDNUYsQ0FBQyxDQUFDO0lBRUYsd0VBQXdFO0lBQ3hFLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxNQUFjO1FBQ2pELE9BQU8sVUFBaUQsR0FBRyxJQUFnQjtZQUN6RSxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSw4QkFBVyxFQUFFO1FBQy9CLGNBQWMsQ0FBQyxTQUFpQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hGO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLE1BQWM7UUFDcEQsT0FBTyxVQUFpRCxHQUFHLElBQWdCO1lBQ3pFLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLCtCQUFZLEVBQUU7UUFDaEMsY0FBYyxDQUFDLFNBQWlDLENBQUMsTUFBTSxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0Y7SUFFRCxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLFdBQVcsR0FBRyxJQUFJO1FBQzVELE9BQU8sd0JBQVcsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLE1BQU0sQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ILENBQUMsQ0FBQztJQUVGLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxRQUFnQjtRQUNyRCxPQUFPO1lBQ0wsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsMENBQTBDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLFFBQWdCO1FBQ3JELE9BQU8sVUFBaUQsR0FBUTtZQUM5RCxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekgsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLFFBQVEsSUFBSSw2QkFBVSxFQUFFO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7WUFDeEQsR0FBRyxFQUFFLG9CQUFvQixDQUFDLFFBQVEsQ0FBUTtZQUMxQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDO0FBRVcseUJBQWlCLEdBQUc7SUFDL0IsZUFBZSxFQUFmLHVCQUFlO0lBQ2YsWUFBWSxFQUFaLG9CQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLFFBQVEsRUFBUixtQkFBUTtJQUNSLFdBQVc7Q0FDWixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDdFNGLHdKQUF3RjtBQUV4RixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxELFNBQVMsZUFBZSxDQUFFLGVBQXVCO0lBQy9DLDJFQUEyRTtJQUMzRSx5Q0FBeUM7SUFFekMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDcEMsMkNBQW1CLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM5RixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ25DLDJDQUFtQixDQUFDLElBQUksQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUN6QixnQkFBeUIsRUFBRSxVQUEyQyxFQUFFLGVBQXVCO0lBRS9GLHFDQUFxQztJQUNyQyxJQUFJLFVBQVUsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLG1CQUFPLENBQUMsb0dBQW9ELENBQUMsQ0FBQztRQUM1RixJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsbUJBQU8sQ0FBQywwR0FBdUQsQ0FBQyxDQUFDO1lBQzFGLFlBQVksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUN6QztLQUNGO0lBRUQsSUFBSSxlQUFlLEVBQUU7UUFDbkIsa0RBQWtEO1FBQ2xELGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUM7QUFsQkQsa0NBa0JDOzs7Ozs7Ozs7Ozs7Ozs7QUNuQ0QsMEVBQTBFO0FBQzFFLG1FQUFtRTtBQUNuRSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLHFFQUFxRTtBQUNyRSxtREFBbUQ7O0FBRW5ELDBFQUEwRTtBQUMxRSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFXLElBQUksTUFBYSxDQUFDLENBQUMsTUFBdUIsQ0FBQztBQUtyRSwwQkFBTztBQUpULE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFLOUIsMEJBQU87QUFKVCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBSzVCLHdCQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQlIsd0pBQXdGO0FBQ3hGLDZKQUE0RjtBQUU1RiwyQ0FBMkM7QUFDM0MsMEJBQTBCO0FBQzFCLDZCQUE2QjtBQUM3Qix3QkFBd0I7QUFDeEIsMEJBQTBCO0FBQzFCLGtCQUFrQjtBQUNsQix5QkFBeUI7QUFDekIsMEJBQTBCO0FBQzFCLHlCQUF5QjtBQUN6QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDBCQUEwQjtBQUMxQixnQ0FBZ0M7QUFDaEMsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQiw2QkFBNkI7QUFFN0IsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztBQUUxRSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLDJEQUEyRDtBQUMzRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQzlCLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUF1QyxFQUFFLENBQUM7QUFFN0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzNDLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDakIsS0FBSyxHQUFHLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNoQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtJQUN0QyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFJRixNQUFNLGFBQWE7SUFxQ2pCLFlBQWEsT0FBZTtRQUMxQixpREFBaUQ7UUFDakQsNERBQTREO1FBQzVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUE5QkQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLGFBQWEsQ0FBSyxNQUFxQixFQUFFLFdBQStCO1FBQ3JGLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN6QyxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzFDLENBQUM7WUFDRCxHQUFHLEVBQUUsVUFBK0IsTUFBUztnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLFFBQVEsRUFBRTtvQkFDWiwrREFBK0Q7b0JBQy9ELG9EQUFvRDtvQkFDbkQsUUFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUM7b0JBRXhDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDdEU7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBVyxDQUFDO1FBQ3hFLElBQUk7WUFDRixPQUFPLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHdCQUF3QixDQUFFLE1BQWMsRUFBRSxHQUFHLElBQVc7UUFDOUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsbURBQW1ELEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU8sNEJBQTRCLENBQUUsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUNsRSxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxtREFBbUQsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pILENBQUM7Q0FDRjtBQWxFOEI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7MkNBQXNCO0FBQ3JCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOzJDQUFzQjtBQUNyQjtJQUE1QixhQUFhLENBQUMsYUFBYTsyQ0FBc0I7QUFDckI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7K0NBQTBCO0FBQ3pCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOzZDQUF3QjtBQUN2QjtJQUE1QixhQUFhLENBQUMsYUFBYTsrQ0FBMEI7QUFDekI7SUFBNUIsYUFBYSxDQUFDLGFBQWE7MkNBQXNCO0FBQ3JCO0lBQTVCLGFBQWEsQ0FBQyxhQUFhOytDQUEwQjtBQUN6QjtJQUE1QixhQUFhLENBQUMsYUFBYTs2Q0FBaUM7QUE0RC9ELE1BQU0sa0JBQWtCO0lBaUJ0QixZQUFhLE9BQWU7UUFoQnJCLFdBQU0sR0FBWSxLQUFLO1FBaUI1QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLDJDQUFtQixDQUFDLElBQUksQ0FBQywrQ0FBK0MsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQ3RGLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFuQkQsbUVBQW1FO0lBQ25FLDhEQUE4RDtJQUM5RCxzREFBc0Q7SUFDdEQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUUsR0FBaUI7UUFDcEMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFZTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxXQUFXLENBQUUsT0FBWSxFQUFFLFlBQW9CO1FBQ3BELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxrREFBa0QsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNySixDQUFDO0lBRU0sSUFBSSxDQUFFLElBQVk7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxtQkFBbUIsQ0FBRSxNQUFjLEVBQUUsR0FBRyxJQUFXO1FBQ3pELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDZDQUE2QyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVPLHdCQUF3QixDQUFFLE1BQWMsRUFBRSxHQUFHLElBQVc7UUFDOUQsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsbURBQW1ELEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNySCxDQUFDO0NBQ0Y7QUFFWSxtQkFBVyxHQUFHLENBQ3pCLGVBQXVCLEVBQUUsUUFBZ0IsRUFBRSxZQUFxQixFQUFFLG9CQUE2QixFQUMvRixFQUFFO0lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtRQUNqRCxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEtBQUssR0FBRztZQUNiLDJDQUFtQixDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztLQUNIO0lBRUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1FBQ3pCLGlFQUFpRTtRQUNoRSxNQUFjLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBWSxFQUFFLFNBQWtCLEVBQUUsUUFBaUI7WUFDbEYsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QztZQUNELE1BQU0sT0FBTyxHQUFHLDJDQUFtQixDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hJLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7UUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1QztJQUVELGtDQUFrQztJQUNsQyxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1FBQzdDLDJDQUFtQixDQUFDLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxVQUMxRCxNQUFNLEVBQUUsUUFBZ0IsRUFBRSxPQUFZLEVBQUUsWUFBb0I7WUFFNUQsK0VBQStFO1lBQy9FLG9CQUFvQjtZQUNwQixFQUFFO1lBQ0YsMERBQTBEO1lBQzFELGdFQUFnRTtZQUNoRSwyQkFBMkI7WUFDM0IsTUFBTSxLQUFLLEdBQVEsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFekMsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDckIsS0FBSyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7WUFDNUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUxQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQXFCLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUc7WUFDcEIsMkNBQW1CLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUc7WUFDdkIsMkNBQW1CLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsVUFBVSxNQUFjO1lBQzFDLDJDQUFtQixDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDOUMsR0FBRyxFQUFFO2dCQUNILE9BQU8sMkNBQW1CLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDL0UsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1FBQzNCLDJFQUEyRTtRQUMzRSx3RUFBd0U7UUFDeEUsMkJBQTJCO1FBQzNCLEVBQUU7UUFDRixxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHVEQUF1RDtRQUN2RCxJQUFJLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEUsd0NBQXdDO1FBQ3hDLDJDQUFtQixDQUFDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxVQUFVLE1BQU0sRUFBRSxlQUFnQztZQUNwSCxJQUFJLHFCQUFxQixLQUFLLGVBQWUsRUFBRTtnQkFDN0MscUJBQXFCLEdBQUcsZUFBZSxDQUFDO2dCQUN4QyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsOEVBQThFO1FBQzlFLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/web-view/guest-view-internal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/web-view/guest-view-internal.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100774,"message":"SourceMap: mapping webpack:///lib/renderer/web-view/web-view-attributes.ts => /Users/roblou/code/vscode/lib/renderer/web-view/web-view-attributes.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100774,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/web-view/web-view-attributes.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-attributes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/web-view/web-view-attributes.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100775,"message":"SourceMap: mapping webpack:///lib/renderer/web-view/web-view-element.ts => /Users/roblou/code/vscode/lib/renderer/web-view/web-view-element.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100775,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/web-view/web-view-element.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-element.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/web-view/web-view-element.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100777,"message":"SourceMap: mapping webpack:///lib/renderer/web-view/web-view-impl.ts => /Users/roblou/code/vscode/lib/renderer/web-view/web-view-impl.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100777,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/web-view/web-view-impl.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-impl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/web-view/web-view-impl.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100778,"message":"SourceMap: mapping webpack:///lib/renderer/web-view/web-view-init.ts => /Users/roblou/code/vscode/lib/renderer/web-view/web-view-init.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100778,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/web-view/web-view-init.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-init.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/web-view/web-view-init.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100780,"message":"SourceMap: mapping webpack:///lib/renderer/webpack-provider.ts => /Users/roblou/code/vscode/lib/renderer/webpack-provider.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100781,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/webpack-provider.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/webpack-provider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/webpack-provider.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100783,"message":"SourceMap: mapping webpack:///lib/renderer/window-setup.ts => /Users/roblou/code/vscode/lib/renderer/window-setup.ts, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100783,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///lib/renderer/window-setup.ts","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/lib/renderer/window-setup.ts","resolvedUrl":"file:///Users/roblou/code/vscode/lib/renderer/window-setup.ts","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100788,"message":"SourceMap: mapping webpack:///external \"buffer\" => /Users/roblou/code/vscode/external \"buffer\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100788,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"buffer\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"buffer\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"buffer\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100792,"message":"SourceMap: mapping webpack:///external \"events\" => /Users/roblou/code/vscode/external \"events\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100793,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"events\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"events\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"events\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100796,"message":"SourceMap: mapping webpack:///external \"module\" => /Users/roblou/code/vscode/external \"module\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100796,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"module\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"module\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"module\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100800,"message":"SourceMap: mapping webpack:///external \"path\" => /Users/roblou/code/vscode/external \"path\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100800,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"path\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"path\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"path\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100812,"message":"SourceMap: mapping webpack:///external \"stream\" => /Users/roblou/code/vscode/external \"stream\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100812,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"stream\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"stream\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"stream\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100815,"message":"SourceMap: mapping webpack:///external \"timers\" => /Users/roblou/code/vscode/external \"timers\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100815,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"timers\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"timers\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"timers\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100821,"message":"SourceMap: mapping webpack:///external \"url\" => /Users/roblou/code/vscode/external \"url\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100821,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"url\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtCO0FBQzFFO0FBQ0EseURBQWlELGNBQWM7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUF5QyxpQ0FBaUM7QUFDMUUsd0hBQWdILG1CQUFtQixFQUFFO0FBQ3JJO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7OztBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRkEsK0NBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUcsY0FBYztBQUNqQixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHNCQUFzQjtBQUN6QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGlCQUFpQjtBQUNwQixHQUFHLHlCQUF5QjtBQUM1QixHQUFHLGtCQUFrQjtBQUNyQixHQUFHLHdCQUF3QjtBQUMzQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxtQkFBbUI7QUFDdEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRyxjQUFjO0FBQ2pCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsdUJBQXVCO0FBQzFCLEdBQUcsMkJBQTJCO0FBQzlCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsaUJBQWlCO0FBQ3BCLEdBQUcsa0JBQWtCO0FBQ3JCLEdBQUcsNEJBQTRCO0FBQy9CLEdBQUcseUJBQXlCO0FBQzVCLEdBQUcsbUJBQW1CO0FBQ3RCLEdBQUcsZUFBZTtBQUNsQixHQUFHLGVBQWU7QUFDbEIsR0FBRyxzQkFBc0I7QUFDekIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLLG9CQUFvQjtBQUN6QixLQUFLLGlCQUFpQjtBQUN0QixLQUFLLHNCQUFzQjtBQUMzQixLQUFLLHdCQUF3QjtBQUM3QixLQUFLLHVCQUF1QjtBQUM1QixLQUFLLHFCQUFxQjtBQUMxQixLQUFLO0FBQ0w7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNuREEsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQSwyQkFBMkIsbUJBQU8sQ0FBQyw4R0FBeUQ7QUFDNUYsb0JBQW9CLG1CQUFPLENBQUMsd0VBQXNDOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1QkEsSUFBSSxrQkFBa0IsR0FBK0MsSUFBSSxDQUFDO0FBRTFFLFNBQVMsUUFBUSxDQUFFLE9BQWUsRUFBRSxPQUFnQjtJQUNsRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxHQUFHLEdBQUcsT0FBTztRQUNqQixDQUFDLENBQUMsSUFBSSxPQUFPLG9EQUFvRCxPQUFPLFlBQVk7UUFDcEYsQ0FBQyxDQUFDLElBQUksT0FBTyxzQ0FBc0MsQ0FBQztJQUN0RCxPQUFPLEdBQUcsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFxQztJQUNsRCxRQUFRO0lBQ1IsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLHlCQUF5QixPQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUNELEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FBRTtRQUVwRiw0Q0FBNEM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUNoQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLEdBQUcsT0FBTyxXQUFXLENBQUMsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQjtZQUN2RCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sUUFBUSxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQXFDLEdBQUcsSUFBSTtZQUNyRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFlBQVksRUFBRSxDQUFDLFNBQWMsRUFBRSxJQUFZLEVBQUUsTUFBYyxFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQzlFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBUSxFQUFFLEdBQVEsRUFBRSxPQUFlLEVBQUUsT0FBZTtZQUNqRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLFVBQXFCLEdBQUcsSUFBUztnQkFDdEMsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUNsSCxJQUFJLE1BQU0sRUFBRTtZQUNWLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1NBQ25IO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDakMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixXQUFXLGlDQUFpQyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUMzQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsU0FBUyxFQUFFLENBQW9DLEVBQUssRUFBSyxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQXFCLEdBQUcsTUFBYTtZQUMxQyxJQUFJLEVBQXdCLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLGlCQUFpQjtnQkFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE9BQU87aUJBQ1gsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNwQixFQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsRUFBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFNLENBQUM7SUFDVCxDQUFDO0lBRUQsNERBQTREO0lBQzVELDBFQUEwRTtJQUMxRSxpQkFBaUIsRUFBRSxDQUFvQyxFQUFLLENBQUMsMENBQTBDLEVBQUssRUFBRTtRQUM1RyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxVQUFxQixHQUFHLE1BQU07WUFDbkMsSUFBSSxFQUF3QixDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUN4QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPO2lCQUNYLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsd0RBQXdEO29CQUN4RCxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQU0sQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLElBQUksRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUVELHNEQUFzRDtRQUN0RCxtQ0FBbUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDdkMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsa0JBQWUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQzFNWjs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxrRkFBMkM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3BDYTs7QUFFYjtBQUNBO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYSxHQUFHO0FBQzdELEdBQUcsb0NBQW9DLG1CQUFPLENBQUMsd0RBQWdCLEdBQUc7QUFDbEUsR0FBRyw4QkFBOEIsbUJBQU8sQ0FBQywwQ0FBUyxHQUFHO0FBQ3JEO0FBQ0EsR0FBRyxrQ0FBa0MsbUJBQU8sQ0FBQyxrREFBYTtBQUMxRDs7Ozs7Ozs7Ozs7OztBQ1RBLCtDQUFhOztBQUViLE9BQU8sWUFBWSxHQUFHLG1CQUFPLENBQUMsd0RBQVU7QUFDeEMsT0FBTywyQkFBMkI7O0FBRWxDOztBQUVBOzs7Ozs7Ozs7Ozs7OztBQ1BBLCtDQUFhOztBQUViOzs7Ozs7Ozs7Ozs7Ozs7O0FDRkEsNkRBQWdDO0FBRWhDLE1BQU0sV0FBVyxHQUE2QjtJQUM1QyxNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDO0FBSUYsU0FBUyxPQUFPLENBQUUsS0FBaUI7SUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLElBQUksS0FBSyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFFLEtBQWlCO0lBQ25DLElBQUksS0FBSyxZQUFZLGVBQU0sRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ3ZDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLEtBQWlCO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0QkFFQztBQVFELFNBQWdCLFlBQVksQ0FBRSxLQUFpQjtJQUM3QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSxNQUFNLEVBQUcsS0FBZ0IsQ0FBQyxNQUFNO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixZQUFZLENBQUUsS0FBaUI7SUFDN0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksV0FBVyxLQUFLLGVBQU0sRUFBRTtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO1NBQU0sSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtTQUFNLElBQUksV0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSyxXQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0U7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBYkQsb0NBYUM7Ozs7Ozs7Ozs7Ozs7QUN0RUQsK0NBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyR0EsU0FBZ0Isb0JBQW9CLENBQUUsT0FBeUMsRUFBRSxXQUFtQztJQUNsSCxPQUFPLFNBQVMsZUFBZSxDQUFFLElBQVk7UUFDM0MsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFaRCxvREFZQzs7Ozs7Ozs7Ozs7Ozs7O0FDWkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNuQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzNCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQy9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFDM0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFFSCxTQUFnQixXQUFXLENBQUUsS0FBK0I7SUFDMUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBNEIsQ0FBQztRQUNyRixpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsQ0FBQztLQUMxQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVZELGtDQVVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLEtBQThCO0lBQ3ZELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUMxQix3RUFBd0U7UUFDeEUsa0VBQWtFO1FBQ2xFLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQTRCO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckMsNkJBQTZCLEVBQUUsSUFBSTtTQUNwQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFkRCw4QkFjQzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BDRCxxREFBNkI7QUFFN0IsdUpBQXdGO0FBRXhGLE1BQU0sTUFBTSxHQUFHLG1CQUFPLENBQUMsc0JBQVEsQ0FBQyxDQUFDO0FBRWpDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsNkNBQW9CLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFJckYsNEVBQTRFO0FBQzVFLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSxVQUFVO0FBQ1YsTUFBTSxzQkFBc0IsR0FBRyxVQUE0QixJQUFPO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUk7UUFDOUIsT0FBTyxVQUFxQixHQUFHLElBQVc7WUFDeEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFNLENBQUM7QUFDVixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsSUFBSSxDQUFvQixJQUFPLEVBQUUsT0FBeUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUssSUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkMsT0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDekY7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFFOUMseUVBQXlFO0FBQ3pFLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLCtFQUErRTtBQUMvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0lBQzlCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Q0FDekM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO0lBQ2hDLHVDQUF1QztJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQU8sQ0FBQyxzQkFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixHQUFHO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0NBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyRUQsU0FBZ0IsU0FBUyxDQUFFLEdBQVE7SUFDakMsT0FBTyxDQUNMLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJLFlBQVksUUFBUTtRQUM1QixHQUFHLENBQUMsV0FBVztRQUNmLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUN0QixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sWUFBWSxRQUFRO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQzVDLENBQUM7QUFDSixDQUFDO0FBWEQsOEJBV0M7Ozs7Ozs7Ozs7Ozs7OztBQ1hELHFEQUE2QjtBQUU3QixNQUFNLE1BQU0sR0FBRyxtQkFBTyxDQUFDLHNCQUFRLENBQUMsQ0FBQztBQUVqQyxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLG1FQUFtRTtBQUNuRSxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxJQUFZO0lBQzlDLE1BQU0sS0FBSyxHQUFhLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsU0FBUztZQUNyQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUMvQixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUM3QixjQUFjLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUU7SUFDL0MsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0RBQVUsQ0FBQztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUUzQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxPQUFlLEVBQUUsTUFBa0IsRUFBRSxNQUFlO0lBQ3RGLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUMxQixPQUFPLFVBQVUsQ0FBQztLQUNuQjtTQUFNO1FBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDekNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU3RSxNQUFNLFNBQVMsR0FBRyxVQUFVLE1BQWMsRUFBRSxNQUEyQjtJQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsU0FBUyxDQUFFLEtBQVU7SUFDbkMsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO1FBQ2hDLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixtQ0FBbUMsRUFBRSxJQUFJO1NBQzFDLENBQUM7S0FDSDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDN0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDcEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFVO0lBQ3JDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvRDtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDdEM7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBWkQsa0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0Q0QsNkJBQTZCO0FBQ2hCLG1CQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sUUFBUTtJQUNSLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE9BQU87SUFDUCxvQkFBb0I7SUFDcEIsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0lBQ1YsU0FBUztJQUNULG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsa0JBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNoQyxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVVLG9CQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsU0FBUztJQUNULG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsT0FBTztJQUNQLFlBQVk7Q0FDYixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDeEVILGtGQUFrRjtBQUNsRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxFQUFFO0FBQ0Ysd0RBQXdEOztBQUUzQyxlQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQ1B0QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFMUQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsdUJBQXVCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLENBQUMsR0FBVyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUMzRCw0QkFBNEIsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ3hDLENBQUM7QUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFBRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFFeEQsa0JBQWUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQ25CaEI7O0FBRWIsc0JBQXNCLG1CQUFPLENBQUMsZ0ZBQTBDO0FBQ3hFLHlCQUF5QixtQkFBTyxDQUFDLDhHQUF5RDs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FDWEEsaUdBQXVDO0FBQ3ZDLDZKQUE0RjtBQUU1RixzREFBc0Q7QUFDdEQsU0FBUyxPQUFPLENBQUUsT0FBZ0M7SUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFFLE9BQWdDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE1BQU0sRUFBRSxhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxDQUFzQywrQ0FBK0MsRUFBRTtRQUNsSSxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixnQkFBZ0I7S0FDcUIsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0NBdUJDOzs7Ozs7Ozs7Ozs7O0FDaENZOztBQUViLGVBQWUsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdkUsbUJBQW1CLG1CQUFPLENBQUMsc0ZBQTZDOztBQUV4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDYkEsdURBQWE7O0FBRWIsT0FBTyxNQUFNO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFELGdCQUFnQixrREFBa0QsUUFBUSxLQUFLLE1BQU0sR0FBRztBQUN4RjtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUNwQ0EsdURBQWE7O0FBRWI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLHNDQUFzQyxtQkFBTyxDQUFDLDhEQUFrQixHQUFHO0FBQ3RFLEdBQUcsc0NBQXNDLG1CQUFPLENBQUMsOERBQWtCLEdBQUc7QUFDdEUsR0FBRyxvQ0FBb0MsbUJBQU8sQ0FBQywwREFBZ0IsR0FBRztBQUNsRSxHQUFHLGlDQUFpQyxtQkFBTyxDQUFDLG9EQUFhO0FBQ3pEOztBQUVBO0FBQ0EsdUJBQXVCLHdDQUF3QyxtQkFBTyxDQUFDLGtFQUFvQixHQUFHO0FBQzlGOztBQUVBO0FBQ0EsdUJBQXVCLCtCQUErQixtQkFBTyxDQUFDLDhDQUFVLEdBQUc7QUFDM0U7Ozs7Ozs7Ozs7Ozs7O0FDdEJBLGdFQUFhOztBQUViOztBQUVBLE9BQU8sb0JBQW9CLEdBQUcsbUJBQU8sQ0FBQyw0RkFBZ0Q7QUFDdEYsb0JBQW9CLG1CQUFPLENBQUMsNEVBQXdDO0FBQ3BFLG1CQUFtQixtQkFBTyxDQUFDLDBFQUF1QztBQUNsRSxPQUFPLFlBQVksR0FBRyxtQkFBTyxDQUFDLHdFQUFzQztBQUNwRSxPQUFPLHNCQUFzQixHQUFHLG1CQUFPLENBQUMsa0dBQW1EOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"url\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"url\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425100822,"message":"SourceMap: mapping webpack:///external \"util\" => /Users/roblou/code/vscode/external \"util\", via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100822,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///external \"util\"","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbGliL2Jyb3dzZXIvYXBpL21vZHVsZS1rZXlzLmpzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vYXBpL2NsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9kZXByZWNhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvZXhwb3J0cy9lbGVjdHJvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2FwaS9uYXRpdmUtaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9hcGkvc2hlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9idWZmZXItdXRpbHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9jcmFzaC1yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2VsZWN0cm9uLWJpbmRpbmctc2V0dXAudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9lcnJvci11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL2luaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi9pcy1wcm9taXNlLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzLnRzIiwid2VicGFjazovLy8uL2xpYi9jb21tb24vdHlwZS11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvbW1vbi93ZWJwYWNrLWdsb2JhbHMtcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9jb250ZXh0LWJyaWRnZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2NyYXNoLXJlcG9ydGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9hcGkvZGVza3RvcC1jYXB0dXJlci50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL2V4cG9ydHMvZWxlY3Ryb24uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9pcGMtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2FwaS9tb2R1bGUtbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3JlbW90ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvYXBpL3dlYi1mcmFtZS50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvY2FsbGJhY2tzLXJlZ2lzdHJ5LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jaHJvbWUtYXBpLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bi50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvZXh0ZW5zaW9ucy9zdG9yYWdlLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9leHRlbnNpb25zL3dlYi1uYXZpZ2F0aW9uLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbml0LnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9pbnNwZWN0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLnRzIiwid2VicGFjazovLy8uL2xpYi9yZW5kZXJlci9zZWN1cml0eS13YXJuaW5ncy50cyIsIndlYnBhY2s6Ly8vLi9saWIvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L2d1ZXN0LXZpZXctaW50ZXJuYWwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWF0dHJpYnV0ZXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWVsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWluaXQudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dlYnBhY2stcHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vbGliL3JlbmRlcmVyL3dpbmRvdy1zZXR1cC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidGltZXJzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXJsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUEwQyxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBd0Qsa0JBQWtC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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUN4QyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pELEdBQUcsRUFBRTtnQkFDSCxPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQzFSRixtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxpQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7Ozs7QUNBQSxnQzs7Ozs7Ozs7Ozs7QUNBQSxpQyIsImZpbGUiOiJyZW5kZXJlcl9pbml0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9saWIvcmVuZGVyZXIvaW5pdC50c1wiKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gVE9ETzogRmlndXJlIG91dCBhIHdheSB0byBub3QgZHVwbGljYXRlIHRoaXMgaW5mb3JtYXRpb24gYmV0d2VlbiBoZXJlIGFuZCBtb2R1bGUtbGlzdFxuLy8gSXQgaXMgY3VycmVudGx5IGR1cGxpY2F0ZWQgYXMgbW9kdWxlLWxpc3QgXCJyZXF1aXJlXCJzIGFsbCB0aGUgYnJvd3NlciBBUEkgZmlsZSBhbmQgdGhlXG4vLyByZW1vdGUgbW9kdWxlIGluIHRoZSByZW5kZXJlciBwcm9jZXNzIGRlcGVuZHMgb24gdGhhdCBmaWxlLiAgQXMgYSByZXN1bHQgd2VicGFja1xuLy8gaW5jbHVkZXMgYWxsIHRoZSBicm93c2VyIEFQSSBmaWxlcyBpbiB0aGUgcmVuZGVyZXIgcHJvY2VzcyBhcyB3ZWxsIGFuZCB3ZSB3YW50IHRvIGF2b2lkIHRoYXRcblxuY29uc3QgZmVhdHVyZXMgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnZmVhdHVyZXMnKTtcblxuLy8gQnJvd3NlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2FwcCcgfSxcbiAgeyBuYW1lOiAnYXV0b1VwZGF0ZXInIH0sXG4gIHsgbmFtZTogJ0Jyb3dzZXJWaWV3JyB9LFxuICB7IG5hbWU6ICdCcm93c2VyV2luZG93JyB9LFxuICB7IG5hbWU6ICdjb250ZW50VHJhY2luZycgfSxcbiAgeyBuYW1lOiAnY3Jhc2hSZXBvcnRlcicgfSxcbiAgeyBuYW1lOiAnZGlhbG9nJyB9LFxuICB7IG5hbWU6ICdnbG9iYWxTaG9ydGN1dCcgfSxcbiAgeyBuYW1lOiAnaXBjTWFpbicgfSxcbiAgeyBuYW1lOiAnaW5BcHBQdXJjaGFzZScgfSxcbiAgeyBuYW1lOiAnTWVudScgfSxcbiAgeyBuYW1lOiAnTWVudUl0ZW0nIH0sXG4gIHsgbmFtZTogJ25hdGl2ZVRoZW1lJyB9LFxuICB7IG5hbWU6ICduZXQnIH0sXG4gIHsgbmFtZTogJ25ldExvZycgfSxcbiAgeyBuYW1lOiAnTm90aWZpY2F0aW9uJyB9LFxuICB7IG5hbWU6ICdwb3dlck1vbml0b3InIH0sXG4gIHsgbmFtZTogJ3Bvd2VyU2F2ZUJsb2NrZXInIH0sXG4gIHsgbmFtZTogJ3Byb3RvY29sJyB9LFxuICB7IG5hbWU6ICdzY3JlZW4nIH0sXG4gIHsgbmFtZTogJ3Nlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3N5c3RlbVByZWZlcmVuY2VzJyB9LFxuICB7IG5hbWU6ICdUb3BMZXZlbFdpbmRvdycgfSxcbiAgeyBuYW1lOiAnVG91Y2hCYXInIH0sXG4gIHsgbmFtZTogJ1RyYXknIH0sXG4gIHsgbmFtZTogJ1ZpZXcnIH0sXG4gIHsgbmFtZTogJ3dlYkNvbnRlbnRzJyB9LFxuICB7IG5hbWU6ICdXZWJDb250ZW50c1ZpZXcnIH1cbl07XG5cbmlmIChmZWF0dXJlcy5pc1ZpZXdBcGlFbmFibGVkKCkpIHtcbiAgbW9kdWxlLmV4cG9ydHMucHVzaChcbiAgICB7IG5hbWU6ICdCb3hMYXlvdXQnIH0sXG4gICAgeyBuYW1lOiAnQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xhYmVsQnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ0xheW91dE1hbmFnZXInIH0sXG4gICAgeyBuYW1lOiAnTWRUZXh0QnV0dG9uJyB9LFxuICAgIHsgbmFtZTogJ1Jlc2l6ZUFyZWEnIH0sXG4gICAgeyBuYW1lOiAnVGV4dEZpZWxkJyB9XG4gICk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNsaXBib2FyZCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjbGlwYm9hcmQnKTtcblxuaWYgKHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBjb25zdCBpcGNSZW5kZXJlclV0aWxzID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscycpO1xuICBjb25zdCB0eXBlVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnKTtcblxuICBjb25zdCBtYWtlUmVtb3RlTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgYXJncyA9IHR5cGVVdGlscy5zZXJpYWxpemUoYXJncyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfQ0xJUEJPQVJEJywgbWV0aG9kLCAuLi5hcmdzKTtcbiAgICAgIHJldHVybiB0eXBlVXRpbHMuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICB9O1xuICB9O1xuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7XG4gICAgLy8gT24gTGludXggd2UgY291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQgaW4gcmVuZGVyZXIgcHJvY2Vzcy5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3Qua2V5cyhjbGlwYm9hcmQpKSB7XG4gICAgICBjbGlwYm9hcmRbbWV0aG9kXSA9IG1ha2VSZW1vdGVNZXRob2QobWV0aG9kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAvLyBSZWFkL3dyaXRlIHRvIGZpbmQgcGFzdGVib2FyZCBvdmVyIElQQyBzaW5jZSBvbmx5IG1haW4gcHJvY2VzcyBpcyBub3RpZmllZCBvZiBjaGFuZ2VzXG4gICAgY2xpcGJvYXJkLnJlYWRGaW5kVGV4dCA9IG1ha2VSZW1vdGVNZXRob2QoJ3JlYWRGaW5kVGV4dCcpO1xuICAgIGNsaXBib2FyZC53cml0ZUZpbmRUZXh0ID0gbWFrZVJlbW90ZU1ldGhvZCgnd3JpdGVGaW5kVGV4dCcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xpcGJvYXJkO1xuIiwibGV0IGRlcHJlY2F0aW9uSGFuZGxlcjogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvbkhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gd2Fybk9uY2UgKG9sZE5hbWU6IHN0cmluZywgbmV3TmFtZT86IHN0cmluZykge1xuICBsZXQgd2FybmVkID0gZmFsc2U7XG4gIGNvbnN0IG1zZyA9IG5ld05hbWVcbiAgICA/IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlICcke25ld05hbWV9JyBpbnN0ZWFkLmBcbiAgICA6IGAnJHtvbGROYW1lfScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLmA7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCF3YXJuZWQgJiYgIXByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIGRlcHJlY2F0ZS5sb2cobXNnKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IGRlcHJlY2F0ZTogRWxlY3Ryb25JbnRlcm5hbC5EZXByZWNhdGlvblV0aWwgPSB7XG4gIHdhcm5PbmNlLFxuICBzZXRIYW5kbGVyOiAoaGFuZGxlcikgPT4geyBkZXByZWNhdGlvbkhhbmRsZXIgPSBoYW5kbGVyOyB9LFxuICBnZXRIYW5kbGVyOiAoKSA9PiBkZXByZWNhdGlvbkhhbmRsZXIsXG4gIHdhcm46IChvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLm5vRGVwcmVjYXRpb24pIHtcbiAgICAgIGRlcHJlY2F0ZS5sb2coYCcke29sZE5hbWV9JyBpcyBkZXByZWNhdGVkLiBVc2UgJyR7bmV3TmFtZX0nIGluc3RlYWQuYCk7XG4gICAgfVxuICB9LFxuICBsb2c6IChtZXNzYWdlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZXByZWNhdGlvbkhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlcHJlY2F0aW9uSGFuZGxlcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICByZXR1cm4gY29uc29sZS50cmFjZShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgKGVsZWN0cm9uKSAke21lc3NhZ2V9YCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIHJlbW92ZSBhIGZ1bmN0aW9uIHdpdGggbm8gcmVwbGFjZW1lbnRcbiAgcmVtb3ZlRnVuY3Rpb246IChmbiwgcmVtb3ZlZE5hbWUpID0+IHtcbiAgICBpZiAoIWZuKSB7IHRocm93IEVycm9yKGAnJHtyZW1vdmVkTmFtZX0gZnVuY3Rpb24nIGlzIGludmFsaWQgb3IgZG9lcyBub3QgZXhpc3QuYCk7IH1cblxuICAgIC8vIHdyYXAgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gd2FybiB1c2VyXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICAvLyBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBmdW5jdGlvblxuICByZW5hbWVGdW5jdGlvbjogKGZuLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKGAke2ZuLm5hbWV9IGZ1bmN0aW9uYCwgYCR7bmV3TmFtZX0gZnVuY3Rpb25gKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgd2FybigpO1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSxcblxuICBtb3ZlQVBJOiAoZm46IEZ1bmN0aW9uLCBvbGRVc2FnZTogc3RyaW5nLCBuZXdVc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZFVzYWdlLCBuZXdVc2FnZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICAgIHdhcm4oKTtcbiAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGFuIGV2ZW50XG4gIGV2ZW50OiAoZW1pdHRlciwgb2xkTmFtZSwgbmV3TmFtZSkgPT4ge1xuICAgIGNvbnN0IHdhcm4gPSBuZXdOYW1lLnN0YXJ0c1dpdGgoJy0nKSAvKiBpbnRlcm5hbCBldmVudCAqL1xuICAgICAgPyB3YXJuT25jZShgJHtvbGROYW1lfSBldmVudGApXG4gICAgICA6IHdhcm5PbmNlKGAke29sZE5hbWV9IGV2ZW50YCwgYCR7bmV3TmFtZX0gZXZlbnRgKTtcbiAgICByZXR1cm4gZW1pdHRlci5vbihuZXdOYW1lLCBmdW5jdGlvbiAodGhpczogTm9kZUpTLkV2ZW50RW1pdHRlciwgLi4uYXJncykge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChvbGROYW1lKSAhPT0gMCkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHRoaXMuZW1pdChvbGROYW1lLCAuLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICAvLyBkZXByZWNhdGUgYSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9uIHBhaXIgaW4gZmF2b3Igb2YgYSBwcm9wZXJ0eVxuICBmblRvUHJvcGVydHk6IChwcm90b3R5cGU6IGFueSwgcHJvcDogc3RyaW5nLCBnZXR0ZXI6IHN0cmluZywgc2V0dGVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd2l0aFdhcm5PbmNlID0gZnVuY3Rpb24gKG9iajogYW55LCBrZXk6IGFueSwgb2xkTmFtZTogc3RyaW5nLCBuZXdOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueSkge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90b3R5cGVbZ2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBnZXR0ZXIsIGAke2dldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICBwcm90b3R5cGVbc2V0dGVyLnN1YnN0cigxKV0gPSB3aXRoV2Fybk9uY2UocHJvdG90eXBlLCBzZXR0ZXIsIGAke3NldHRlci5zdWJzdHIoMSl9IGZ1bmN0aW9uYCwgYCR7cHJvcH0gcHJvcGVydHlgKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gcmVtb3ZlIGEgcHJvcGVydHkgd2l0aCBubyByZXBsYWNlbWVudFxuICByZW1vdmVQcm9wZXJ0eTogKG8sIHJlbW92ZWROYW1lKSA9PiB7XG4gICAgLy8gaWYgdGhlIHByb3BlcnR5J3MgYWxyZWFkeSBiZWVuIHJlbW92ZWQsIHdhcm4gYWJvdXQgaXRcbiAgICBpZiAoIShyZW1vdmVkTmFtZSBpbiBvKSkge1xuICAgICAgZGVwcmVjYXRlLmxvZyhgVW5hYmxlIHRvIHJlbW92ZSBwcm9wZXJ0eSAnJHtyZW1vdmVkTmFtZX0nIGZyb20gYW4gb2JqZWN0IHRoYXQgbGFja3MgaXQuYCk7XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKHJlbW92ZWROYW1lKTtcbiAgICBsZXQgdmFsID0gb1tyZW1vdmVkTmFtZV07XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCByZW1vdmVkTmFtZSwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IG5ld1ZhbCA9PiB7XG4gICAgICAgIHdhcm4oKTtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIC8vIGRlcHJlY2F0ZSBhIGNhbGxiYWNrLWJhc2VkIGZ1bmN0aW9uIGluIGZhdm9yIG9mIG9uZSByZXR1cm5pbmcgYSBQcm9taXNlXG4gIHByb21pc2lmeTogPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oZm46IFQpOiBUID0+IHtcbiAgICBjb25zdCBmbk5hbWUgPSBmbi5uYW1lIHx8ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb2xkTmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBjYWxsYmFja3NgO1xuICAgIGNvbnN0IG5ld05hbWUgPSBgJHtmbk5hbWV9IHdpdGggUHJvbWlzZXNgO1xuICAgIGNvbnN0IHdhcm4gPSB3YXJuT25jZShvbGROYW1lLCBuZXdOYW1lKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gICAgICBsZXQgY2I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPiAwICYmIHR5cGVvZiBwYXJhbXNbcGFyYW1zLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gcGFyYW1zLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IGZuLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzZTtcbiAgICAgIGlmIChwcm9jZXNzLmVuYWJsZVByb21pc2VBUElzKSB3YXJuKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGNiIS5sZW5ndGggPT09IDIgPyBjYiEobnVsbCwgcmVzKSA6IGNiIShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBjYiEubGVuZ3RoID09PSAyID8gY2IhKGVycikgOiBjYiEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH0gYXMgVDtcbiAgfSxcblxuICAvLyBjb252ZXJ0UHJvbWlzZVZhbHVlOiBUZW1wb3JhcmlseSBkaXNhYmxlZCB1bnRpbCBpdCdzIHVzZWRcbiAgLy8gZGVwcmVjYXRlIGEgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb24gaW4gZmF2b3Igb2Ygb25lIHJldHVybmluZyBhIFByb21pc2VcbiAgcHJvbWlzaWZ5TXVsdGlBcmc6IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KGZuOiBUIC8qIGNvbnZlcnRQcm9taXNlVmFsdWU6ICh2OiBhbnkpID0+IGFueSAqLyk6IFQgPT4ge1xuICAgIGNvbnN0IGZuTmFtZSA9IGZuLm5hbWUgfHwgJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBvbGROYW1lID0gYCR7Zm5OYW1lfSB3aXRoIGNhbGxiYWNrc2A7XG4gICAgY29uc3QgbmV3TmFtZSA9IGAke2ZuTmFtZX0gd2l0aCBQcm9taXNlc2A7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLnBhcmFtcykge1xuICAgICAgbGV0IGNiOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCAmJiB0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYiA9IHBhcmFtcy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBmbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgICAgaWYgKCFjYikgcmV0dXJuIHByb21pc2U7XG4gICAgICBpZiAocHJvY2Vzcy5lbmFibGVQcm9taXNlQVBJcykgd2FybigpO1xuICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RhbmRhcmQvbm8tY2FsbGJhY2stbGl0ZXJhbFxuICAgICAgICAgICAgY2IhLmxlbmd0aCA+IDIgPyBjYiEobnVsbCwgLi4ucmVzKSA6IGNiISguLi5yZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2IhKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9IGFzIFQ7XG4gIH0sXG5cbiAgLy8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgcHJvcGVydHlcbiAgcmVuYW1lUHJvcGVydHk6IChvLCBvbGROYW1lLCBuZXdOYW1lKSA9PiB7XG4gICAgY29uc3Qgd2FybiA9IHdhcm5PbmNlKG9sZE5hbWUsIG5ld05hbWUpO1xuXG4gICAgLy8gaWYgdGhlIG5ldyBwcm9wZXJ0eSBpc24ndCB0aGVyZSB5ZXQsXG4gICAgLy8gaW5qZWN0IGl0IGFuZCB3YXJuIGFib3V0IGl0XG4gICAgaWYgKChvbGROYW1lIGluIG8pICYmICEobmV3TmFtZSBpbiBvKSkge1xuICAgICAgd2FybigpO1xuICAgICAgb1tuZXdOYW1lXSA9IChvIGFzIGFueSlbb2xkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gd3JhcCB0aGUgZGVwcmVjYXRlZCBwcm9wZXJ0eSBpbiBhbiBhY2Nlc3NvciB0byB3YXJuXG4gICAgLy8gYW5kIHJlZGlyZWN0IHRvIHRoZSBuZXcgcHJvcGVydHlcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIG9sZE5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIHJldHVybiBvW25ld05hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogdmFsdWUgPT4ge1xuICAgICAgICB3YXJuKCk7XG4gICAgICAgIG9bbmV3TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtb2R1bGVMaXN0ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9hcGkvbW9kdWxlLWxpc3QnKTtcblxuZXhwb3J0cy5oYW5kbGVFU01vZHVsZSA9IChsb2FkZXIpID0+ICgpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBsb2FkZXIoKTtcbiAgaWYgKHZhbHVlLl9fZXNNb2R1bGUgJiYgdmFsdWUuZGVmYXVsdCkgcmV0dXJuIHZhbHVlLmRlZmF1bHQ7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydHMubWVtb2l6ZWRHZXR0ZXIgPSAoZ2V0dGVyKSA9PiB7XG4gIC8qXG4gICAqIEl0J3Mgb2sgdG8gbGVhayB0aGlzIHZhbHVlIGFzIGl0IHdvdWxkIGJlIGxlYWtlZCBieSB0aGUgZ2xvYmFsXG4gICAqIG5vZGUgbW9kdWxlIGNhY2hlIGFueXdheSBhdCBgTW9kdWxlLl9jYWNoZWAuICBUaGlzIG1lbW9pemF0aW9uXG4gICAqIGlzIGRyYW1hdGljYWxseSBmYXN0ZXIgdGhhbiByZWx5aW5nIG9uIG5vZGVzIG1vZHVsZSBjYWNoZSBob3dldmVyXG4gICAqL1xuICBsZXQgbWVtb2l6ZWRWYWx1ZSA9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAobWVtb2l6ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbWVtb2l6ZWRWYWx1ZSA9IGdldHRlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRWYWx1ZTtcbiAgfTtcbn07XG5cbi8vIEF0dGFjaGVzIHByb3BlcnRpZXMgdG8gfHRhcmdldEV4cG9ydHN8LlxuZXhwb3J0cy5kZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHRhcmdldEV4cG9ydHMpIHtcbiAgY29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcbiAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlTGlzdCkge1xuICAgIGRlc2NyaXB0b3JzW21vZHVsZS5uYW1lXSA9IHtcbiAgICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICAgIGdldDogZXhwb3J0cy5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldEV4cG9ydHMsIGRlc2NyaXB0b3JzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIENvbW1vbiBtb2R1bGVzLCBwbGVhc2Ugc29ydCBhbHBoYWJldGljYWxseVxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NsaXBib2FyZCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9jbGlwYm9hcmQnKSB9LFxuICB7IG5hbWU6ICduYXRpdmVJbWFnZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9uYXRpdmUtaW1hZ2UnKSB9LFxuICB7IG5hbWU6ICdzaGVsbCcsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9zaGVsbCcpIH0sXG4gIC8vIFRoZSBpbnRlcm5hbCBtb2R1bGVzLCBpbnZpc2libGUgdW5sZXNzIHlvdSBrbm93IHRoZWlyIG5hbWVzLlxuICB7IG5hbWU6ICdkZXByZWNhdGUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vZGVwcmVjYXRlJyksIHByaXZhdGU6IHRydWUgfVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XG5jb25zdCB7IE5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZSB9ID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ25hdGl2ZV9pbWFnZScpO1xuXG5kZXByZWNhdGUuZm5Ub1Byb3BlcnR5KE5hdGl2ZUltYWdlLnByb3RvdHlwZSwgJ2lzTWFjVGVtcGxhdGVJbWFnZScsICdfaXNUZW1wbGF0ZUltYWdlJywgJ19zZXRUZW1wbGF0ZUltYWdlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3NoZWxsJyk7XG4iLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5jb25zdCB0eXBlZEFycmF5czogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge1xuICBCdWZmZXIsXG4gIEFycmF5QnVmZmVyLFxuICBJbnQ4QXJyYXksXG4gIFVpbnQ4QXJyYXksXG4gIFVpbnQ4Q2xhbXBlZEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5XG59O1xuXG50eXBlIEJ1ZmZlckxpa2UgPSBCdWZmZXIgfCBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuXG5mdW5jdGlvbiBnZXRUeXBlICh2YWx1ZTogQnVmZmVyTGlrZSkge1xuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZWRBcnJheXMpKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdHlwZWRBcnJheXNbdHlwZV0pIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVmZmVyJyk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1ZmZlciAodmFsdWU6IEJ1ZmZlckxpa2UpIHtcbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlck1ldGEge1xuICB0eXBlOiBrZXlvZiB0eXBlb2YgdHlwZWRBcnJheXM7XG4gIGRhdGE6IEJ1ZmZlcjtcbiAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb01ldGEgKHZhbHVlOiBCdWZmZXJMaWtlKTogQnVmZmVyTWV0YSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHlwZSh2YWx1ZSksXG4gICAgZGF0YTogZ2V0QnVmZmVyKHZhbHVlKSxcbiAgICAvLyBOQi4gV2Ugb25seSB1c2UgbGVuZ3RoIHdoZW4gZGVjb2RpbmcgSW50OEFycmF5IGFuZCBmcmllbmRzLlxuICAgIC8vIEZvciBvdGhlciBidWZmZXItbGlrZSB0eXBlcyB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIHVuZGVmaW5lZC5cbiAgICBsZW5ndGg6ICh2YWx1ZSBhcyBCdWZmZXIpLmxlbmd0aFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVRvQnVmZmVyICh2YWx1ZTogQnVmZmVyTWV0YSkge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHR5cGVkQXJyYXlzW3ZhbHVlLnR5cGVdO1xuICBjb25zdCBkYXRhID0gZ2V0QnVmZmVyKHZhbHVlLmRhdGEpO1xuXG4gIGlmIChjb25zdHJ1Y3RvciA9PT0gQnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyAoY29uc3RydWN0b3IgYXMgYW55KShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY3Jhc2hfcmVwb3J0ZXInKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlciB7XG4gIGNvbnRydWN0b3IgKCkge1xuICAgIHRoaXMucHJvZHVjdE5hbWUgPSBudWxsO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IG51bGw7XG4gIH1cblxuICBpbml0IChvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0IChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdE5hbWUsXG4gICAgICBjb21wYW55TmFtZSxcbiAgICAgIGV4dHJhID0ge30sXG4gICAgICBpZ25vcmVTeXN0ZW1DcmFzaEhhbmRsZXIgPSBmYWxzZSxcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHVwbG9hZFRvU2VydmVyID0gdHJ1ZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGNvbXBhbnlOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcignY29tcGFueU5hbWUgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuICAgIGlmIChzdWJtaXRVUkwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdzdWJtaXRVUkwgaXMgYSByZXF1aXJlZCBvcHRpb24gdG8gY3Jhc2hSZXBvcnRlci5zdGFydCcpO1xuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5pbml0KHtcbiAgICAgIHN1Ym1pdFVSTCxcbiAgICAgIHByb2R1Y3ROYW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmV0LnByb2R1Y3ROYW1lO1xuICAgIHRoaXMuY3Jhc2hlc0RpcmVjdG9yeSA9IHJldC5jcmFzaGVzRGlyZWN0b3J5O1xuXG4gICAgaWYgKGV4dHJhLl9wcm9kdWN0TmFtZSA9PSBudWxsKSBleHRyYS5fcHJvZHVjdE5hbWUgPSByZXQucHJvZHVjdE5hbWU7XG4gICAgaWYgKGV4dHJhLl9jb21wYW55TmFtZSA9PSBudWxsKSBleHRyYS5fY29tcGFueU5hbWUgPSBjb21wYW55TmFtZTtcbiAgICBpZiAoZXh0cmEuX3ZlcnNpb24gPT0gbnVsbCkgZXh0cmEuX3ZlcnNpb24gPSByZXQuYXBwVmVyc2lvbjtcblxuICAgIGJpbmRpbmcuc3RhcnQocmV0LnByb2R1Y3ROYW1lLCBjb21wYW55TmFtZSwgc3VibWl0VVJMLCByZXQuY3Jhc2hlc0RpcmVjdG9yeSwgdXBsb2FkVG9TZXJ2ZXIsIGlnbm9yZVN5c3RlbUNyYXNoSGFuZGxlciwgZXh0cmEpO1xuICB9XG5cbiAgZ2V0TGFzdENyYXNoUmVwb3J0ICgpIHtcbiAgICBjb25zdCByZXBvcnRzID0gdGhpcy5nZXRVcGxvYWRlZFJlcG9ydHMoKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXRzID0gKGEgJiYgYS5kYXRlKSA/IG5ldyBEYXRlKGEuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgY29uc3QgYnRzID0gKGIgJiYgYi5kYXRlKSA/IG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgcmV0dXJuIGJ0cyAtIGF0cztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIChyZXBvcnRzLmxlbmd0aCA+IDApID8gcmVwb3J0c1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRVcGxvYWRlZFJlcG9ydHMgKCkge1xuICAgIGNvbnN0IGNyYXNoRGlyID0gdGhpcy5nZXRDcmFzaGVzRGlyZWN0b3J5KCk7XG4gICAgaWYgKCFjcmFzaERpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmFzaFJlcG9ydGVyIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbmRpbmcuZ2V0VXBsb2FkZWRSZXBvcnRzKGNyYXNoRGlyKTtcbiAgfVxuXG4gIGdldENyYXNoZXNEaXJlY3RvcnkgKCkge1xuICAgIHJldHVybiB0aGlzLmNyYXNoZXNEaXJlY3Rvcnk7XG4gIH1cblxuICBnZXRQcm9kdWN0TmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdE5hbWU7XG4gIH1cblxuICBnZXRVcGxvYWRUb1NlcnZlciAoKSB7XG4gICAgaWYgKHByb2Nlc3MudHlwZSA9PT0gJ2Jyb3dzZXInKSB7XG4gICAgICByZXR1cm4gYmluZGluZy5nZXRVcGxvYWRUb1NlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFVwbG9hZFRvU2VydmVyIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHByb2Nlc3MnKTtcbiAgICB9XG4gIH1cblxuICBzZXRVcGxvYWRUb1NlcnZlciAodXBsb2FkVG9TZXJ2ZXIpIHtcbiAgICBpZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgICAgIHJldHVybiBiaW5kaW5nLnNldFVwbG9hZFRvU2VydmVyKHVwbG9hZFRvU2VydmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRVcGxvYWRUb1NlcnZlciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9jZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFQYXJhbWV0ZXIgKGtleSwgdmFsdWUpIHtcbiAgICBiaW5kaW5nLmFkZEV4dHJhUGFyYW1ldGVyKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlRXh0cmFQYXJhbWV0ZXIgKGtleSkge1xuICAgIGJpbmRpbmcucmVtb3ZlRXh0cmFQYXJhbWV0ZXIoa2V5KTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMgKCkge1xuICAgIHJldHVybiBiaW5kaW5nLmdldFBhcmFtZXRlcnMoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENyYXNoUmVwb3J0ZXI7XG4iLCJleHBvcnQgZnVuY3Rpb24gZWxlY3Ryb25CaW5kaW5nU2V0dXAgKGJpbmRpbmc6IHR5cGVvZiBwcm9jZXNzWydfbGlua2VkQmluZGluZyddLCBwcm9jZXNzVHlwZTogdHlwZW9mIHByb2Nlc3NbJ3R5cGUnXSk6IHR5cGVvZiBwcm9jZXNzWydlbGVjdHJvbkJpbmRpbmcnXSB7XG4gIHJldHVybiBmdW5jdGlvbiBlbGVjdHJvbkJpbmRpbmcgKG5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmluZGluZyhgYXRvbV8ke3Byb2Nlc3NUeXBlfV8ke25hbWV9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgvTm8gc3VjaCBtb2R1bGUvLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIGJpbmRpbmcoYGF0b21fY29tbW9uXyR7bmFtZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiIsImNvbnN0IGNvbnN0cnVjdG9ycyA9IG5ldyBNYXAoW1xuICBbRXJyb3IubmFtZSwgRXJyb3JdLFxuICBbRXZhbEVycm9yLm5hbWUsIEV2YWxFcnJvcl0sXG4gIFtSYW5nZUVycm9yLm5hbWUsIFJhbmdlRXJyb3JdLFxuICBbUmVmZXJlbmNlRXJyb3IubmFtZSwgUmVmZXJlbmNlRXJyb3JdLFxuICBbU3ludGF4RXJyb3IubmFtZSwgU3ludGF4RXJyb3JdLFxuICBbVHlwZUVycm9yLm5hbWUsIFR5cGVFcnJvcl0sXG4gIFtVUklFcnJvci5uYW1lLCBVUklFcnJvcl1cbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUgKGVycm9yOiBFbGVjdHJvbi5TZXJpYWxpemVkRXJyb3IpOiBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZSB7XG4gIGlmIChlcnJvciAmJiBlcnJvci5fX0VMRUNUUk9OX1NFUklBTElaRURfRVJST1JfXyAmJiBjb25zdHJ1Y3RvcnMuaGFzKGVycm9yLm5hbWUpKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZ2V0KGVycm9yLm5hbWUpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEVycm9yID0gbmV3IGNvbnN0cnVjdG9yIShlcnJvci5tZXNzYWdlKSBhcyBFbGVjdHJvbi5FcnJvcldpdGhDYXVzZTtcbiAgICBkZXNlcmlhbGl6ZWRFcnJvci5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmZyb20gPSBlcnJvci5mcm9tO1xuICAgIGRlc2VyaWFsaXplZEVycm9yLmNhdXNlID0gZXhwb3J0cy5kZXNlcmlhbGl6ZShlcnJvci5jYXVzZSk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplZEVycm9yO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoZXJyb3I6IEVsZWN0cm9uLkVycm9yV2l0aENhdXNlKTogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBFcnJvcnMgZ2V0IGxvc3QsIGJlY2F1c2U6IEpTT04uc3RyaW5naWZ5KG5ldyBFcnJvcignTWVzc2FnZScpKSA9PT0ge31cbiAgICAvLyBUYWtlIHRoZSBzZXJpYWxpemFibGUgcHJvcGVydGllcyBhbmQgY29uc3RydWN0IGEgZ2VuZXJpYyBvYmplY3RcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIHN0YWNrOiBlcnJvci5zdGFjayxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICBmcm9tOiBwcm9jZXNzLnR5cGUgYXMgRWxlY3Ryb24uUHJvY2Vzc1R5cGUsXG4gICAgICBjYXVzZTogZXhwb3J0cy5zZXJpYWxpemUoZXJyb3IuY2F1c2UpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX0VSUk9SX186IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cbiIsImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5cbmltcG9ydCB7IGVsZWN0cm9uQmluZGluZ1NldHVwIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lbGVjdHJvbi1iaW5kaW5nLXNldHVwJztcblxuY29uc3QgdGltZXJzID0gcmVxdWlyZSgndGltZXJzJyk7XG5cbnByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nID0gZWxlY3Ryb25CaW5kaW5nU2V0dXAocHJvY2Vzcy5fbGlua2VkQmluZGluZywgcHJvY2Vzcy50eXBlKTtcblxudHlwZSBBbnlGbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbi8vIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBtYWtlcyB1c2Ugb2YgdXZfY2hlY2sgYW5kIHV2X3ByZXBhcmUgdG9cbi8vIHJ1biB0aGUgY2FsbGJhY2tzLCBob3dldmVyIHNpbmNlIHdlIG9ubHkgcnVuIHV2IGxvb3Agb24gcmVxdWVzdHMsIHRoZVxuLy8gY2FsbGJhY2tzIHdvdWxkbid0IGJlIGNhbGxlZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBhY3RpdmF0ZWQgdGhlIHV2IGxvb3AsXG4vLyB3aGljaCB3b3VsZCBkZWxheSB0aGUgY2FsbGJhY2tzIGZvciBhcmJpdHJhcnkgbG9uZyB0aW1lLiBTbyB3ZSBzaG91bGRcbi8vIGluaXRpYXRpdmVseSBhY3RpdmF0ZSB0aGUgdXYgbG9vcCBvbmNlIHNldEltbWVkaWF0ZSBhbmQgcHJvY2Vzcy5uZXh0VGljayBpc1xuLy8gY2FsbGVkLlxuY29uc3Qgd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Rm4+IChmdW5jOiBUKTogVCB7XG4gIHJldHVybiB3cmFwKGZ1bmMsIGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBwcm9jZXNzLmFjdGl2YXRlVXZMb29wKCk7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9KSBhcyBUO1xufTtcblxuLyoqXG4gKiBDYXN0cyB0byBhbnkgYmVsb3cgZm9yIGZ1bmMgYXJlIGR1ZSB0byBUeXBlc2NyaXB0IG5vdCBzdXBwb3J0aW5nIHN5bWJvbHNcbiAqIGluIGluZGV4IHNpZ25hdHVyZXNcbiAqXG4gKiBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE4NjNcbiAqL1xuZnVuY3Rpb24gd3JhcCA8VCBleHRlbmRzIEFueUZuPiAoZnVuYzogVCwgd3JhcHBlcjogKGZuOiBBbnlGbikgPT4gVCkge1xuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlcihmdW5jKTtcbiAgaWYgKChmdW5jIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSkge1xuICAgICh3cmFwcGVkIGFzIGFueSlbdXRpbC5wcm9taXNpZnkuY3VzdG9tXSA9IHdyYXBwZXIoKGZ1bmMgYXMgYW55KVt1dGlsLnByb21pc2lmeS5jdXN0b21dKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlZDtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AocHJvY2Vzcy5uZXh0VGljayk7XG5cbmdsb2JhbC5zZXRJbW1lZGlhdGUgPSB0aW1lcnMuc2V0SW1tZWRpYXRlID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW1tZWRpYXRlKTtcbmdsb2JhbC5jbGVhckltbWVkaWF0ZSA9IHRpbWVycy5jbGVhckltbWVkaWF0ZTtcblxuLy8gc2V0VGltZW91dCBuZWVkcyB0byB1cGRhdGUgdGhlIHBvbGxpbmcgdGltZW91dCBvZiB0aGUgZXZlbnQgbG9vcCwgd2hlblxuLy8gY2FsbGVkIHVuZGVyIENocm9taXVtJ3MgZXZlbnQgbG9vcCB0aGUgbm9kZSdzIGV2ZW50IGxvb3Agd29uJ3QgZ2V0IGEgY2hhbmNlXG4vLyB0byB1cGRhdGUgdGhlIHRpbWVvdXQsIHNvIHdlIGhhdmUgdG8gZm9yY2UgdGhlIG5vZGUncyBldmVudCBsb29wIHRvXG4vLyByZWNhbGN1bGF0ZSB0aGUgdGltZW91dCBpbiBicm93c2VyIHByb2Nlc3MuXG50aW1lcnMuc2V0VGltZW91dCA9IHdyYXBXaXRoQWN0aXZhdGVVdkxvb3AodGltZXJzLnNldFRpbWVvdXQpO1xudGltZXJzLnNldEludGVydmFsID0gd3JhcFdpdGhBY3RpdmF0ZVV2TG9vcCh0aW1lcnMuc2V0SW50ZXJ2YWwpO1xuXG4vLyBPbmx5IG92ZXJyaWRlIHRoZSBnbG9iYWwgc2V0VGltZW91dC9zZXRJbnRlcnZhbCBpbXBscyBpbiB0aGUgYnJvd3NlciBwcm9jZXNzXG5pZiAocHJvY2Vzcy50eXBlID09PSAnYnJvd3NlcicpIHtcbiAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aW1lcnMuc2V0VGltZW91dDtcbiAgZ2xvYmFsLnNldEludGVydmFsID0gdGltZXJzLnNldEludGVydmFsO1xufVxuXG5pZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAvLyBBbHdheXMgcmV0dXJucyBFT0YgZm9yIHN0ZGluIHN0cmVhbS5cbiAgY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG4gIGNvbnN0IHN0ZGluID0gbmV3IFJlYWRhYmxlKCk7XG4gIHN0ZGluLnB1c2gobnVsbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnc3RkaW4nLCB7XG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCAoKSB7XG4gICAgICByZXR1cm4gc3RkaW47XG4gICAgfVxuICB9KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UgKHZhbDogYW55KSB7XG4gIHJldHVybiAoXG4gICAgdmFsICYmXG4gICAgdmFsLnRoZW4gJiZcbiAgICB2YWwudGhlbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlamVjdCAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZWplY3QgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5yZXNvbHZlICYmXG4gICAgdmFsLmNvbnN0cnVjdG9yLnJlc29sdmUgaW5zdGFuY2VvZiBGdW5jdGlvblxuICApO1xufVxuIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XG5cbi8vIENsZWFyIE5vZGUncyBnbG9iYWwgc2VhcmNoIHBhdGhzLlxuTW9kdWxlLmdsb2JhbFBhdGhzLmxlbmd0aCA9IDA7XG5cbi8vIFByZXZlbnQgTm9kZSBmcm9tIGFkZGluZyBwYXRocyBvdXRzaWRlIHRoaXMgYXBwIHRvIHNlYXJjaCBwYXRocy5cbmNvbnN0IHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MucmVzb3VyY2VzUGF0aCArIHBhdGguc2VwO1xuY29uc3Qgb3JpZ2luYWxOb2RlTW9kdWxlUGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocztcbk1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzID0gZnVuY3Rpb24gKGZyb206IHN0cmluZykge1xuICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBvcmlnaW5hbE5vZGVNb2R1bGVQYXRocyhmcm9tKTtcbiAgY29uc3QgZnJvbVBhdGggPSBwYXRoLnJlc29sdmUoZnJvbSkgKyBwYXRoLnNlcDtcbiAgLy8gSWYgXCJmcm9tXCIgaXMgb3V0c2lkZSB0aGUgYXBwIHRoZW4gd2UgZG8gbm90aGluZy5cbiAgaWYgKGZyb21QYXRoLnN0YXJ0c1dpdGgocmVzb3VyY2VzUGF0aFdpdGhUcmFpbGluZ1NsYXNoKSkge1xuICAgIHJldHVybiBwYXRocy5maWx0ZXIoZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZS5zdGFydHNXaXRoKHJlc291cmNlc1BhdGhXaXRoVHJhaWxpbmdTbGFzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG59O1xuXG4vLyBNYWtlIGEgZmFrZSBFbGVjdHJvbiBtb2R1bGUgdGhhdCB3ZSB3aWxsIGluc2VydCBpbnRvIHRoZSBtb2R1bGUgY2FjaGVcbmNvbnN0IGVsZWN0cm9uTW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24nLCBudWxsKTtcbmVsZWN0cm9uTW9kdWxlLmlkID0gJ2VsZWN0cm9uJztcbmVsZWN0cm9uTW9kdWxlLmxvYWRlZCA9IHRydWU7XG5lbGVjdHJvbk1vZHVsZS5maWxlbmFtZSA9ICdlbGVjdHJvbic7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlY3Ryb25Nb2R1bGUsICdleHBvcnRzJywge1xuICBnZXQ6ICgpID0+IHJlcXVpcmUoJ2VsZWN0cm9uJylcbn0pO1xuXG5Nb2R1bGUuX2NhY2hlWydlbGVjdHJvbiddID0gZWxlY3Ryb25Nb2R1bGU7XG5cbmNvbnN0IG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWU7XG5Nb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0OiBzdHJpbmcsIHBhcmVudDogTm9kZU1vZHVsZSwgaXNNYWluOiBib29sZWFuKSB7XG4gIGlmIChyZXF1ZXN0ID09PSAnZWxlY3Ryb24nKSB7XG4gICAgcmV0dXJuICdlbGVjdHJvbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVzb2x2ZUZpbGVuYW1lKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluKTtcbiAgfVxufTtcbiIsImNvbnN0IHsgbmF0aXZlSW1hZ2UsIE5hdGl2ZUltYWdlIH0gPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnbmF0aXZlX2ltYWdlJyk7XG5cbmNvbnN0IG9iamVjdE1hcCA9IGZ1bmN0aW9uIChzb3VyY2U6IE9iamVjdCwgbWFwcGVyOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gIGNvbnN0IHNvdXJjZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzb3VyY2UpO1xuICBjb25zdCB0YXJnZXRFbnRyaWVzID0gc291cmNlRW50cmllcy5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXksIG1hcHBlcih2YWwpXSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0RW50cmllcyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTmF0aXZlSW1hZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVmZmVyOiB2YWx1ZS50b0JpdG1hcCgpLFxuICAgICAgc2l6ZTogdmFsdWUuZ2V0U2l6ZSgpLFxuICAgICAgX19FTEVDVFJPTl9TRVJJQUxJWkVEX05hdGl2ZUltYWdlX186IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgc2VyaWFsaXplKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplICh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlLl9fRUxFQ1RST05fU0VSSUFMSVpFRF9OYXRpdmVJbWFnZV9fKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21CaXRtYXAodmFsdWUuYnVmZmVyLCB2YWx1ZS5zaXplKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoZGVzZXJpYWxpemUpO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdE1hcCh2YWx1ZSwgZGVzZXJpYWxpemUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIiwiLy8gUHVibGljLWZhY2luZyBBUEkgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBzeW5jTWV0aG9kcyA9IG5ldyBTZXQoW1xuICAnZ2V0VVJMJyxcbiAgJ2dldFRpdGxlJyxcbiAgJ2lzTG9hZGluZycsXG4gICdpc0xvYWRpbmdNYWluRnJhbWUnLFxuICAnaXNXYWl0aW5nRm9yUmVzcG9uc2UnLFxuICAnc3RvcCcsXG4gICdyZWxvYWQnLFxuICAncmVsb2FkSWdub3JpbmdDYWNoZScsXG4gICdjYW5Hb0JhY2snLFxuICAnY2FuR29Gb3J3YXJkJyxcbiAgJ2NhbkdvVG9PZmZzZXQnLFxuICAnY2xlYXJIaXN0b3J5JyxcbiAgJ2dvQmFjaycsXG4gICdnb0ZvcndhcmQnLFxuICAnZ29Ub0luZGV4JyxcbiAgJ2dvVG9PZmZzZXQnLFxuICAnaXNDcmFzaGVkJyxcbiAgJ3NldFVzZXJBZ2VudCcsXG4gICdnZXRVc2VyQWdlbnQnLFxuICAnb3BlbkRldlRvb2xzJyxcbiAgJ2Nsb3NlRGV2VG9vbHMnLFxuICAnaXNEZXZUb29sc09wZW5lZCcsXG4gICdpc0RldlRvb2xzRm9jdXNlZCcsXG4gICdpbnNwZWN0RWxlbWVudCcsXG4gICdzZXRBdWRpb011dGVkJyxcbiAgJ2lzQXVkaW9NdXRlZCcsXG4gICdpc0N1cnJlbnRseUF1ZGlibGUnLFxuICAndW5kbycsXG4gICdyZWRvJyxcbiAgJ2N1dCcsXG4gICdjb3B5JyxcbiAgJ3Bhc3RlJyxcbiAgJ3Bhc3RlQW5kTWF0Y2hTdHlsZScsXG4gICdkZWxldGUnLFxuICAnc2VsZWN0QWxsJyxcbiAgJ3Vuc2VsZWN0JyxcbiAgJ3JlcGxhY2UnLFxuICAncmVwbGFjZU1pc3NwZWxsaW5nJyxcbiAgJ2ZpbmRJblBhZ2UnLFxuICAnc3RvcEZpbmRJblBhZ2UnLFxuICAnZG93bmxvYWRVUkwnLFxuICAnaW5zcGVjdFNoYXJlZFdvcmtlcicsXG4gICdpbnNwZWN0U2VydmljZVdvcmtlcicsXG4gICdzaG93RGVmaW5pdGlvbkZvclNlbGVjdGlvbicsXG4gICdnZXRab29tRmFjdG9yJyxcbiAgJ2dldFpvb21MZXZlbCcsXG4gICdzZXRab29tRmFjdG9yJyxcbiAgJ3NldFpvb21MZXZlbCdcbl0pO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnYXVkaW9NdXRlZCcsXG4gICd1c2VyQWdlbnQnLFxuICAnem9vbUxldmVsJyxcbiAgJ3pvb21GYWN0b3InLFxuICAnZnJhbWVSYXRlJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBhc3luY01ldGhvZHMgPSBuZXcgU2V0KFtcbiAgJ2xvYWRVUkwnLFxuICAnZXhlY3V0ZUphdmFTY3JpcHQnLFxuICAnaW5zZXJ0Q1NTJyxcbiAgJ2luc2VydFRleHQnLFxuICAncmVtb3ZlSW5zZXJ0ZWRDU1MnLFxuICAnc2VuZCcsXG4gICdzZW5kSW5wdXRFdmVudCcsXG4gICdzZXRMYXlvdXRab29tTGV2ZWxMaW1pdHMnLFxuICAnc2V0VmlzdWFsWm9vbUxldmVsTGltaXRzJyxcbiAgJ3ByaW50JyxcbiAgJ3ByaW50VG9QREYnXG5dKTtcbiIsIi8vIENhcHR1cmVzIG9yaWdpbmFsIGdsb2JhbHMgaW50byBhIHNjb3BlIHRvIGVuc3VyZSB0aGF0IHVzZXJsYW5kIG1vZGlmaWNhdGlvbnMgZG9cbi8vIG5vdCBpbXBhY3QgRWxlY3Ryb24uICBOb3RlIHRoYXQgdXNlcnMgZG9pbmc6XG4vL1xuLy8gZ2xvYmFsLlByb21pc2UucmVzb2x2ZSA9IG15Rm5cbi8vXG4vLyBXaWxsIG11dGF0ZSB0aGlzIGNhcHR1cmVkIG9uZSBhcyB3ZWxsIGFuZCB0aGF0IGlzIE9LLlxuXG5leHBvcnQgY29uc3QgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiY29uc3QgeyBoYXNTd2l0Y2ggfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcbmNvbnN0IGJpbmRpbmcgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygnY29udGV4dF9icmlkZ2UnKTtcblxuY29uc3QgY29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5cbmNvbnN0IGNoZWNrQ29udGV4dElzb2xhdGlvbkVuYWJsZWQgPSAoKSA9PiB7XG4gIGlmICghY29udGV4dElzb2xhdGlvbkVuYWJsZWQpIHRocm93IG5ldyBFcnJvcignY29udGV4dEJyaWRnZSBBUEkgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGNvbnRleHRJc29sYXRpb24gaXMgZW5hYmxlZCcpO1xufTtcblxuY29uc3QgY29udGV4dEJyaWRnZSA9IHtcbiAgZXhwb3NlSW5NYWluV29ybGQ6IChrZXk6IHN0cmluZywgYXBpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgY2hlY2tDb250ZXh0SXNvbGF0aW9uRW5hYmxlZCgpO1xuICAgIHJldHVybiBiaW5kaW5nLmV4cG9zZUFQSUluTWFpbldvcmxkKGtleSwgYXBpKTtcbiAgfSxcbiAgZGVidWdHQzogKCkgPT4gYmluZGluZy5fZGVidWdHQ01hcHMoe30pXG59O1xuXG5pZiAoIWJpbmRpbmcuX2RlYnVnR0NNYXBzKSBkZWxldGUgY29udGV4dEJyaWRnZS5kZWJ1Z0dDO1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZXh0QnJpZGdlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBDcmFzaFJlcG9ydGVyID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9jcmFzaC1yZXBvcnRlcicpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcblxuY2xhc3MgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyIGV4dGVuZHMgQ3Jhc2hSZXBvcnRlciB7XG4gIGluaXQgKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9DUkFTSF9SRVBPUlRFUl9JTklUJywgb3B0aW9ucyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgQ3Jhc2hSZXBvcnRlclJlbmRlcmVyKCk7XG4iLCJpbXBvcnQgeyBuYXRpdmVJbWFnZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5cbi8vIHxvcHRpb25zLnR5cGVzfCBjYW4ndCBiZSBlbXB0eSBhbmQgbXVzdCBiZSBhbiBhcnJheVxuZnVuY3Rpb24gaXNWYWxpZCAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgY29uc3QgdHlwZXMgPSBvcHRpb25zID8gb3B0aW9ucy50eXBlcyA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U291cmNlcyAob3B0aW9uczogRWxlY3Ryb24uU291cmNlc09wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkKG9wdGlvbnMpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb3B0aW9ucycpO1xuXG4gIGNvbnN0IGNhcHR1cmVXaW5kb3cgPSBvcHRpb25zLnR5cGVzLmluY2x1ZGVzKCd3aW5kb3cnKTtcbiAgY29uc3QgY2FwdHVyZVNjcmVlbiA9IG9wdGlvbnMudHlwZXMuaW5jbHVkZXMoJ3NjcmVlbicpO1xuXG4gIGNvbnN0IHsgdGh1bWJuYWlsU2l6ZSA9IHsgd2lkdGg6IDE1MCwgaGVpZ2h0OiAxNTAgfSB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBmZXRjaFdpbmRvd0ljb25zID0gZmFsc2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPEVsZWN0cm9uSW50ZXJuYWwuR2V0U291cmNlc1Jlc3VsdFtdPignRUxFQ1RST05fQlJPV1NFUl9ERVNLVE9QX0NBUFRVUkVSX0dFVF9TT1VSQ0VTJywge1xuICAgIGNhcHR1cmVXaW5kb3csXG4gICAgY2FwdHVyZVNjcmVlbixcbiAgICB0aHVtYm5haWxTaXplLFxuICAgIGZldGNoV2luZG93SWNvbnNcbiAgfSBhcyBFbGVjdHJvbkludGVybmFsLkdldFNvdXJjZXNPcHRpb25zKTtcblxuICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+ICh7XG4gICAgaWQ6IHNvdXJjZS5pZCxcbiAgICBuYW1lOiBzb3VyY2UubmFtZSxcbiAgICB0aHVtYm5haWw6IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKHNvdXJjZS50aHVtYm5haWwpLFxuICAgIGRpc3BsYXlfaWQ6IHNvdXJjZS5kaXNwbGF5X2lkLFxuICAgIGFwcEljb246IHNvdXJjZS5hcHBJY29uID8gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoc291cmNlLmFwcEljb24pIDogbnVsbFxuICB9KSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vYXBpL2V4cG9ydHMvZWxlY3Ryb24nKTtcbmNvbnN0IG1vZHVsZUxpc3QgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvYXBpL21vZHVsZS1saXN0Jyk7XG5cbi8vIEltcG9ydCBjb21tb24gbW9kdWxlcy5cbmNvbW1vbi5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMpO1xuXG5mb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVMaXN0KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBtb2R1bGUubmFtZSwge1xuICAgIGVudW1lcmFibGU6ICFtb2R1bGUucHJpdmF0ZSxcbiAgICBnZXQ6IGNvbW1vbi5oYW5kbGVFU01vZHVsZShtb2R1bGUubG9hZGVyKVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgeyBpcGMgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmNvbnN0IGlwY1JlbmRlcmVyID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYycpO1xuY29uc3QgaW50ZXJuYWwgPSBmYWxzZTtcblxuaXBjUmVuZGVyZXIuc2VuZCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kU3luYyA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFN5bmMoaW50ZXJuYWwsIGNoYW5uZWwsIGFyZ3MpWzBdO1xufTtcblxuaXBjUmVuZGVyZXIuc2VuZFRvSG9zdCA9IGZ1bmN0aW9uIChjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvSG9zdChjaGFubmVsLCBhcmdzKTtcbn07XG5cbmlwY1JlbmRlcmVyLnNlbmRUbyA9IGZ1bmN0aW9uICh3ZWJDb250ZW50c0lkLCBjaGFubmVsLCAuLi5hcmdzKSB7XG4gIHJldHVybiBpcGMuc2VuZFRvKGludGVybmFsLCBmYWxzZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLnNlbmRUbyhpbnRlcm5hbCwgdHJ1ZSwgd2ViQ29udGVudHNJZCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlci5pbnZva2UgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gaXBjLmludm9rZShjaGFubmVsLCBhcmdzKS50aGVuKCh7IGVycm9yLCByZXN1bHQgfSkgPT4ge1xuICAgIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGludm9raW5nIHJlbW90ZSBtZXRob2QgJyR7Y2hhbm5lbH0nOiAke2Vycm9yfWApOyB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlwY1JlbmRlcmVyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmZWF0dXJlcyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdmZWF0dXJlcycpO1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgZW5hYmxlUmVtb3RlTW9kdWxlID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2VuYWJsZVJlbW90ZU1vZHVsZScpO1xuXG4vLyBSZW5kZXJlciBzaWRlIG1vZHVsZXMsIHBsZWFzZSBzb3J0IGFscGhhYmV0aWNhbGx5LlxuLy8gQSBtb2R1bGUgaXMgYGVuYWJsZWRgIGlmIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvbmRpdGlvbiBkZWZpbmVkLlxubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHsgbmFtZTogJ2NvbnRleHRCcmlkZ2UnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vY29udGV4dC1icmlkZ2UnKSB9LFxuICB7IG5hbWU6ICdjcmFzaFJlcG9ydGVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2NyYXNoLXJlcG9ydGVyJykgfSxcbiAgeyBuYW1lOiAnaXBjUmVuZGVyZXInLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vaXBjLXJlbmRlcmVyJykgfSxcbiAgeyBuYW1lOiAnd2ViRnJhbWUnLCBsb2FkZXI6ICgpID0+IHJlcXVpcmUoJy4vd2ViLWZyYW1lJykgfVxuXTtcblxuaWYgKGZlYXR1cmVzLmlzRGVza3RvcENhcHR1cmVyRW5hYmxlZCgpKSB7XG4gIG1vZHVsZS5leHBvcnRzLnB1c2goeyBuYW1lOiAnZGVza3RvcENhcHR1cmVyJywgbG9hZGVyOiAoKSA9PiByZXF1aXJlKCcuL2Rlc2t0b3AtY2FwdHVyZXInKSB9KTtcbn1cblxuaWYgKGVuYWJsZVJlbW90ZU1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cy5wdXNoKHsgbmFtZTogJ3JlbW90ZScsIGxvYWRlcjogKCkgPT4gcmVxdWlyZSgnLi9yZW1vdGUnKSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgeyBDYWxsYmFja3NSZWdpc3RyeSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2NhbGxiYWNrcy1yZWdpc3RyeScpO1xuY29uc3QgYnVmZmVyVXRpbHMgPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2J1ZmZlci11dGlscycpO1xuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcbmNvbnN0IHsgaXNQcm9taXNlIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2lzLXByb21pc2UnKTtcbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuXG5jb25zdCBjYWxsYmFja3NSZWdpc3RyeSA9IG5ldyBDYWxsYmFja3NSZWdpc3RyeSgpO1xuY29uc3QgcmVtb3RlT2JqZWN0Q2FjaGUgPSB2OFV0aWwuY3JlYXRlSURXZWFrTWFwKCk7XG5cbi8vIEFuIHVuaXF1ZSBJRCB0aGF0IGNhbiByZXByZXNlbnQgY3VycmVudCBjb250ZXh0LlxuY29uc3QgY29udGV4dElkID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2NvbnRleHRJZCcpO1xuXG4vLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB3aGVuIGN1cnJlbnQgY29udGV4dCBpcyBnb2luZyB0byBiZSByZWxlYXNlZC5cbi8vIE5vdGUgdGhhdCB3aGVuIHRoZSByZW5kZXJlciBwcm9jZXNzIGlzIGRlc3Ryb3llZCwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBiZVxuLy8gc2VudCwgd2UgYWxzbyBsaXN0ZW4gdG8gdGhlIFwicmVuZGVyLXZpZXctZGVsZXRlZFwiIGV2ZW50IGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIHRvIGd1YXJkIHRoYXQgc2l0dWF0aW9uLlxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0NPTlRFWFRfUkVMRUFTRSc7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZChjb21tYW5kLCBjb250ZXh0SWQpO1xufSk7XG5cbi8vIENvbnZlcnQgdGhlIGFyZ3VtZW50cyBvYmplY3QgaW50byBhbiBhcnJheSBvZiBtZXRhIGRhdGEuXG5mdW5jdGlvbiB3cmFwQXJncyAoYXJncywgdmlzaXRlZCA9IG5ldyBTZXQoKSkge1xuICBjb25zdCB2YWx1ZVRvTWV0YSA9ICh2YWx1ZSkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB2YWx1ZTogd3JhcEFyZ3ModmFsdWUsIHZpc2l0ZWQpXG4gICAgICB9O1xuICAgICAgdmlzaXRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBlbHNlIGlmIChidWZmZXJVdGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdidWZmZXInLFxuICAgICAgICB2YWx1ZTogYnVmZmVyVXRpbHMuYnVmZmVyVG9NZXRhKHZhbHVlKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB2YWx1ZTogdmFsdWUuZ2V0VGltZSgpXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoKHZhbHVlICE9IG51bGwpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3Byb21pc2UnLFxuICAgICAgICAgIHRoZW46IHZhbHVlVG9NZXRhKGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICAgICAgdmFsdWUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodjhVdGlsLmdldEhpZGRlblZhbHVlKHZhbHVlLCAnYXRvbUlkJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3RlLW9iamVjdCcsXG4gICAgICAgICAgaWQ6IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ2F0b21JZCcpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBuYW1lOiB2YWx1ZS5jb25zdHJ1Y3RvciA/IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgOiAnJyxcbiAgICAgICAgbWVtYmVyczogW11cbiAgICAgIH07XG4gICAgICB2aXNpdGVkLmFkZCh2YWx1ZSk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgbWV0YS5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHByb3AsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVG9NZXRhKHZhbHVlW3Byb3BdKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZpc2l0ZWQuZGVsZXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBtZXRhO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHY4VXRpbC5nZXRIaWRkZW5WYWx1ZSh2YWx1ZSwgJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdmdW5jdGlvbi13aXRoLXJldHVybi12YWx1ZScsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVRvTWV0YSh2YWx1ZSgpKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgaWQ6IGNhbGxiYWNrc1JlZ2lzdHJ5LmFkZCh2YWx1ZSksXG4gICAgICAgIGxvY2F0aW9uOiB2OFV0aWwuZ2V0SGlkZGVuVmFsdWUodmFsdWUsICdsb2NhdGlvbicpLFxuICAgICAgICBsZW5ndGg6IHZhbHVlLmxlbmd0aFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGFyZ3MubWFwKHZhbHVlVG9NZXRhKTtcbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgbWVtYmVycyBmcm9tIGRlc2NyaXB0b3JzLlxuLy8gVGhlIHxyZWZ8IHdpbGwgYmUga2VwdCByZWZlcmVuY2VkIGJ5IHxtZW1iZXJzfC5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0TWVtZWJlcnN8IGluIHJwYy1zZXJ2ZXIuXG5mdW5jdGlvbiBzZXRPYmplY3RNZW1iZXJzIChyZWYsIG9iamVjdCwgbWV0YUlkLCBtZW1iZXJzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtZW1iZXJzKSkgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1lbWJlcnMpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KG1lbWJlci5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjcmlwdG9yID0geyBlbnVtZXJhYmxlOiBtZW1iZXIuZW51bWVyYWJsZSB9O1xuICAgIGlmIChtZW1iZXIudHlwZSA9PT0gJ21ldGhvZCcpIHtcbiAgICAgIGNvbnN0IHJlbW90ZU1lbWJlckZ1bmN0aW9uID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHJlbW90ZU1lbWJlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DT05TVFJVQ1RPUic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YUlkLCBtZW1iZXIubmFtZSwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUocmV0KTtcbiAgICAgIH07XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yRnVuY3Rpb24gPSBwcm94eUZ1bmN0aW9uUHJvcGVydGllcyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBtZW1iZXIubmFtZSk7XG5cbiAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4ge1xuICAgICAgICBkZXNjcmlwdG9yRnVuY3Rpb24ucmVmID0gcmVmOyAvLyBUaGUgbWVtYmVyIHNob3VsZCByZWZlcmVuY2UgaXRzIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JGdW5jdGlvbjtcbiAgICAgIH07XG4gICAgICAvLyBFbmFibGUgbW9ua2V5LXBhdGNoIHRoZSBtZXRob2RcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGRlc2NyaXB0b3JGdW5jdGlvbiA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWVtYmVyLnR5cGUgPT09ICdnZXQnKSB7XG4gICAgICBkZXNjcmlwdG9yLmdldCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX01FTUJFUl9HRVQnO1xuICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobWVtYmVyLndyaXRhYmxlKSB7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IHdyYXBBcmdzKFt2YWx1ZV0pO1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfU0VUJztcbiAgICAgICAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbWVtYmVyLm5hbWUsIGFyZ3MpO1xuICAgICAgICAgIGlmIChtZXRhICE9IG51bGwpIG1ldGFUb1ZhbHVlKG1ldGEpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBtZW1iZXIubmFtZSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgb2JqZWN0J3MgcHJvdG90eXBlIGZyb20gZGVzY3JpcHRvci5cbi8vIFRoaXMgbWF0Y2hlcyB8Z2V0T2JqZWN0UHJvdG90eXBlfCBpbiBycGMtc2VydmVyLlxuZnVuY3Rpb24gc2V0T2JqZWN0UHJvdG90eXBlIChyZWYsIG9iamVjdCwgbWV0YUlkLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSByZXR1cm47XG4gIGNvbnN0IHByb3RvID0ge307XG4gIHNldE9iamVjdE1lbWJlcnMocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLm1lbWJlcnMpO1xuICBzZXRPYmplY3RQcm90b3R5cGUocmVmLCBwcm90bywgbWV0YUlkLCBkZXNjcmlwdG9yLnByb3RvKTtcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgcHJvdG8pO1xufVxuXG4vLyBXcmFwIGZ1bmN0aW9uIGluIFByb3h5IGZvciBhY2Nlc3NpbmcgcmVtb3RlIHByb3BlcnRpZXNcbmZ1bmN0aW9uIHByb3h5RnVuY3Rpb25Qcm9wZXJ0aWVzIChyZW1vdGVNZW1iZXJGdW5jdGlvbiwgbWV0YUlkLCBuYW1lKSB7XG4gIGxldCBsb2FkZWQgPSBmYWxzZTtcblxuICAvLyBMYXppbHkgbG9hZCBmdW5jdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGxvYWRSZW1vdGVQcm9wZXJ0aWVzID0gKCkgPT4ge1xuICAgIGlmIChsb2FkZWQpIHJldHVybjtcbiAgICBsb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9NRU1CRVJfR0VUJztcbiAgICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1ldGFJZCwgbmFtZSk7XG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZW1vdGVNZW1iZXJGdW5jdGlvbiwgcmVtb3RlTWVtYmVyRnVuY3Rpb24sIG1ldGEuaWQsIG1ldGEubWVtYmVycyk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZW1vdGVNZW1iZXJGdW5jdGlvbiwge1xuICAgIHNldDogKHRhcmdldCwgcHJvcGVydHksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAncmVmJykgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3Byb3BlcnR5XTtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3RvU3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG93bktleXM6ICh0YXJnZXQpID0+IHtcbiAgICAgIGxvYWRSZW1vdGVQcm9wZXJ0aWVzKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKHRhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgICAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgbG9hZFJlbW90ZVByb3BlcnRpZXMoKTtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgbWV0YSBkYXRhIGZyb20gYnJvd3NlciBpbnRvIHJlYWwgdmFsdWUuXG5mdW5jdGlvbiBtZXRhVG9WYWx1ZSAobWV0YSkge1xuICBjb25zdCB0eXBlcyA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbWV0YS52YWx1ZSxcbiAgICBhcnJheTogKCkgPT4gbWV0YS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiBtZXRhVG9WYWx1ZShtZW1iZXIpKSxcbiAgICBidWZmZXI6ICgpID0+IGJ1ZmZlclV0aWxzLm1ldGFUb0J1ZmZlcihtZXRhLnZhbHVlKSxcbiAgICBwcm9taXNlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyB0aGVuOiBtZXRhVG9WYWx1ZShtZXRhLnRoZW4pIH0pLFxuICAgIGVycm9yOiAoKSA9PiBtZXRhVG9QbGFpbk9iamVjdChtZXRhKSxcbiAgICBkYXRlOiAoKSA9PiBuZXcgRGF0ZShtZXRhLnZhbHVlKSxcbiAgICBleGNlcHRpb246ICgpID0+IHsgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShtZXRhLnZhbHVlKTsgfVxuICB9O1xuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHlwZXMsIG1ldGEudHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZXNbbWV0YS50eXBlXSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXQ7XG4gICAgaWYgKHJlbW90ZU9iamVjdENhY2hlLmhhcyhtZXRhLmlkKSkge1xuICAgICAgdjhVdGlsLmFkZFJlbW90ZU9iamVjdFJlZihjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdENhY2hlLmdldChtZXRhLmlkKTtcbiAgICB9XG5cbiAgICAvLyBBIHNoYWRvdyBjbGFzcyB0byByZXByZXNlbnQgdGhlIHJlbW90ZSBmdW5jdGlvbiBvYmplY3QuXG4gICAgaWYgKG1ldGEudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVtb3RlRnVuY3Rpb24gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcmVtb3RlRnVuY3Rpb24pIHtcbiAgICAgICAgICBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ09OU1RSVUNUT1InO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9GVU5DVElPTl9DQUxMJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmogPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCwgbWV0YS5pZCwgd3JhcEFyZ3MoYXJncykpO1xuICAgICAgICByZXR1cm4gbWV0YVRvVmFsdWUob2JqKTtcbiAgICAgIH07XG4gICAgICByZXQgPSByZW1vdGVGdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0ge307XG4gICAgfVxuXG4gICAgc2V0T2JqZWN0TWVtYmVycyhyZXQsIHJldCwgbWV0YS5pZCwgbWV0YS5tZW1iZXJzKTtcbiAgICBzZXRPYmplY3RQcm90b3R5cGUocmV0LCByZXQsIG1ldGEuaWQsIG1ldGEucHJvdG8pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQuY29uc3RydWN0b3IsICduYW1lJywgeyB2YWx1ZTogbWV0YS5uYW1lIH0pO1xuXG4gICAgLy8gVHJhY2sgZGVsZWdhdGUgb2JqJ3MgbGlmZXRpbWUgJiB0ZWxsIGJyb3dzZXIgdG8gY2xlYW4gdXAgd2hlbiBvYmplY3QgaXMgR0NlZC5cbiAgICB2OFV0aWwuc2V0UmVtb3RlT2JqZWN0RnJlZXIocmV0LCBjb250ZXh0SWQsIG1ldGEuaWQpO1xuICAgIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShyZXQsICdhdG9tSWQnLCBtZXRhLmlkKTtcbiAgICB2OFV0aWwuYWRkUmVtb3RlT2JqZWN0UmVmKGNvbnRleHRJZCwgbWV0YS5pZCk7XG4gICAgcmVtb3RlT2JqZWN0Q2FjaGUuc2V0KG1ldGEuaWQsIHJldCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBDb25zdHJ1Y3QgYSBwbGFpbiBvYmplY3QgZnJvbSB0aGUgbWV0YS5cbmZ1bmN0aW9uIG1ldGFUb1BsYWluT2JqZWN0IChtZXRhKSB7XG4gIGNvbnN0IG9iaiA9ICgoKSA9PiBtZXRhLnR5cGUgPT09ICdlcnJvcicgPyBuZXcgRXJyb3IoKSA6IHt9KSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGEubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1ldGEubWVtYmVyc1tpXTtcbiAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlIChjaGFubmVsLCBoYW5kbGVyKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCBwYXNzZWRDb250ZXh0SWQsIGlkLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKHBhc3NlZENvbnRleHRJZCA9PT0gY29udGV4dElkKSB7XG4gICAgICBoYW5kbGVyKGlkLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWVzc2FnZSBzZW50IHRvIGFuIHVuLWV4aXN0IGNvbnRleHQsIG5vdGlmeSB0aGUgZXJyb3IgdG8gbWFpbiBwcm9jZXNzLlxuICAgICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKCdFTEVDVFJPTl9CUk9XU0VSX1dST05HX0NPTlRFWFRfRVJST1InLCBjb250ZXh0SWQsIHBhc3NlZENvbnRleHRJZCwgaWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEJyb3dzZXIgY2FsbHMgYSBjYWxsYmFjayBpbiByZW5kZXJlci5cbmhhbmRsZU1lc3NhZ2UoJ0VMRUNUUk9OX1JFTkRFUkVSX0NBTExCQUNLJywgKGlkLCBhcmdzKSA9PiB7XG4gIGNhbGxiYWNrc1JlZ2lzdHJ5LmFwcGx5KGlkLCBtZXRhVG9WYWx1ZShhcmdzKSk7XG59KTtcblxuLy8gQSBjYWxsYmFjayBpbiBicm93c2VyIGlzIHJlbGVhc2VkLlxuaGFuZGxlTWVzc2FnZSgnRUxFQ1RST05fUkVOREVSRVJfUkVMRUFTRV9DQUxMQkFDSycsIChpZCkgPT4ge1xuICBjYWxsYmFja3NSZWdpc3RyeS5yZW1vdmUoaWQpO1xufSk7XG5cbmV4cG9ydHMucmVxdWlyZSA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX1JFUVVJUkUnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG1vZHVsZSk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEFsaWFzIHRvIHJlbW90ZS5yZXF1aXJlKCdlbGVjdHJvbicpLnh4eC5cbmV4cG9ydHMuZ2V0QnVpbHRpbiA9IChtb2R1bGUpID0+IHtcbiAgY29uc3QgY29tbWFuZCA9ICdFTEVDVFJPTl9CUk9XU0VSX0dFVF9CVUlMVElOJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBtb2R1bGUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5leHBvcnRzLmdldEN1cnJlbnRXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9DVVJSRU5UX1dJTkRPVyc7XG4gIGNvbnN0IG1ldGEgPSBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKGNvbW1hbmQsIGNvbnRleHRJZCk7XG4gIHJldHVybiBtZXRhVG9WYWx1ZShtZXRhKTtcbn07XG5cbi8vIEdldCBjdXJyZW50IFdlYkNvbnRlbnRzIG9iamVjdC5cbmV4cG9ydHMuZ2V0Q3VycmVudFdlYkNvbnRlbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfQ1VSUkVOVF9XRUJfQ09OVEVOVFMnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgYSBnbG9iYWwgb2JqZWN0IGluIGJyb3dzZXIuXG5leHBvcnRzLmdldEdsb2JhbCA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmQgPSAnRUxFQ1RST05fQlJPV1NFUl9HTE9CQUwnO1xuICBjb25zdCBtZXRhID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYyhjb21tYW5kLCBjb250ZXh0SWQsIG5hbWUpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG4vLyBHZXQgdGhlIHByb2Nlc3Mgb2JqZWN0IGluIGJyb3dzZXIuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3Byb2Nlc3MnLCB7XG4gIGdldDogKCkgPT4gZXhwb3J0cy5nZXRHbG9iYWwoJ3Byb2Nlc3MnKVxufSk7XG5cbi8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHNwZWNpZmllZCB2YWx1ZSB3aGVuIGNhbGxlZCBpbiBicm93c2VyLlxuZXhwb3J0cy5jcmVhdGVGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSA9IChyZXR1cm5WYWx1ZSkgPT4ge1xuICBjb25zdCBmdW5jID0gKCkgPT4gcmV0dXJuVmFsdWU7XG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShmdW5jLCAncmV0dXJuVmFsdWUnLCB0cnVlKTtcbiAgcmV0dXJuIGZ1bmM7XG59O1xuXG4vLyBHZXQgdGhlIGd1ZXN0IFdlYkNvbnRlbnRzIGZyb20gZ3Vlc3RJbnN0YW5jZUlkLlxuZXhwb3J0cy5nZXRHdWVzdFdlYkNvbnRlbnRzID0gKGd1ZXN0SW5zdGFuY2VJZCkgPT4ge1xuICBjb25zdCBjb21tYW5kID0gJ0VMRUNUUk9OX0JST1dTRVJfR1VFU1RfV0VCX0NPTlRFTlRTJztcbiAgY29uc3QgbWV0YSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgY29udGV4dElkLCBndWVzdEluc3RhbmNlSWQpO1xuICByZXR1cm4gbWV0YVRvVmFsdWUobWV0YSk7XG59O1xuXG5jb25zdCBhZGRCdWlsdGluUHJvcGVydHkgPSAobmFtZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuICAgIGdldDogKCkgPT4gZXhwb3J0cy5nZXRCdWlsdGluKG5hbWUpXG4gIH0pO1xufTtcblxuY29uc3QgYnJvd3Nlck1vZHVsZXMgPVxuICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2FwaS9tb2R1bGUtbGlzdCcpLmNvbmNhdChcbiAgICByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvYnJvd3Nlci9hcGkvbW9kdWxlLWtleXMnKSk7XG5cbi8vIEFuZCBhZGQgYSBoZWxwZXIgcmVjZWl2ZXIgZm9yIGVhY2ggb25lLlxuYnJvd3Nlck1vZHVsZXNcbiAgLmZpbHRlcigobSkgPT4gIW0ucHJpdmF0ZSlcbiAgLm1hcCgobSkgPT4gbS5uYW1lKVxuICAuZm9yRWFjaChhZGRCdWlsdGluUHJvcGVydHkpO1xuIiwiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd3ZWJfZnJhbWUnKTtcblxuY2xhc3MgV2ViRnJhbWUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAocHVibGljIGNvbnRleHQ6IFdpbmRvdykge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBMb3RzIG9mIHdlYnZpZXcgd291bGQgc3Vic2NyaWJlIHRvIHdlYkZyYW1lJ3MgZXZlbnRzLlxuICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDApO1xuICB9XG5cbiAgZmluZEZyYW1lQnlSb3V0aW5nSWQgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlSb3V0aW5nSWQodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBnZXRGcmFtZUZvclNlbGVjdG9yICguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldEZyYW1lRm9yU2VsZWN0b3IodGhpcy5jb250ZXh0LCAuLi5hcmdzKSk7XG4gIH1cblxuICBmaW5kRnJhbWVCeU5hbWUgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZmluZEZyYW1lQnlOYW1lKHRoaXMuY29udGV4dCwgLi4uYXJncykpO1xuICB9XG5cbiAgZ2V0IG9wZW5lciAoKSB7XG4gICAgcmV0dXJuIGdldFdlYkZyYW1lKGJpbmRpbmcuX2dldE9wZW5lcih0aGlzLmNvbnRleHQpKTtcbiAgfVxuXG4gIGdldCBwYXJlbnQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRQYXJlbnQodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgdG9wICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0VG9wKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQgKCkge1xuICAgIHJldHVybiBnZXRXZWJGcmFtZShiaW5kaW5nLl9nZXRGaXJzdENoaWxkKHRoaXMuY29udGV4dCkpO1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nICgpIHtcbiAgICByZXR1cm4gZ2V0V2ViRnJhbWUoYmluZGluZy5fZ2V0TmV4dFNpYmxpbmcodGhpcy5jb250ZXh0KSk7XG4gIH1cblxuICBnZXQgcm91dGluZ0lkICgpIHtcbiAgICByZXR1cm4gYmluZGluZy5fZ2V0Um91dGluZ0lkKHRoaXMuY29udGV4dCk7XG4gIH1cbn1cblxuLy8gUG9wdWxhdGUgdGhlIG1ldGhvZHMuXG5mb3IgKGNvbnN0IG5hbWUgaW4gYmluZGluZykge1xuICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnXycpKSB7IC8vIHNvbWUgbWV0aG9kcyBhcmUgbWFudWFsbHkgcG9wdWxhdGVkIGFib3ZlXG4gICAgLy8gVE9ETyhmZWxpeHJpZXNlYmVyZyk6IE9uY2Ugd2UgY2FuIHR5cGUgd2ViX2ZyYW1lIG5hdGl2ZXMsIHdlIGNvdWxkXG4gICAgLy8gdXNlIGEgbmVhdCBga2V5b2ZgIGhlcmVcbiAgICAoV2ViRnJhbWUgYXMgYW55KS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgcmV0dXJuIGJpbmRpbmdbbmFtZV0odGhpcy5jb250ZXh0LCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG59XG5cbi8vIEhlbHBlciB0byByZXR1cm4gV2ViRnJhbWUgb3IgbnVsbCBkZXBlbmRpbmcgb24gY29udGV4dC5cbi8vIFRPRE8oemNiZW56KTogQ29uc2lkZXIgcmV0dXJuaW5nIHNhbWUgV2ViRnJhbWUgZm9yIHRoZSBzYW1lIGZyYW1lLlxuZnVuY3Rpb24gZ2V0V2ViRnJhbWUgKGNvbnRleHQ6IFdpbmRvdykge1xuICByZXR1cm4gY29udGV4dCA/IG5ldyBXZWJGcmFtZShjb250ZXh0KSA6IG51bGw7XG59XG5cbmNvbnN0IF93ZWJGcmFtZSA9IG5ldyBXZWJGcmFtZSh3aW5kb3cpO1xuXG5leHBvcnQgZGVmYXVsdCBfd2ViRnJhbWU7XG4iLCJjb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGJhY2tzUmVnaXN0cnkge1xuICBwcml2YXRlIG5leHRJZDogbnVtYmVyID0gMFxuICBwcml2YXRlIGNhbGxiYWNrczogUmVjb3JkPG51bWJlciwgRnVuY3Rpb24+ID0ge31cblxuICBhZGQgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIFRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IGFkZGVkLlxuICAgIGxldCBpZCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxudW1iZXI+KGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgIGlmIChpZCAhPSBudWxsKSByZXR1cm4gaWQ7XG5cbiAgICBpZCA9IHRoaXMubmV4dElkICs9IDE7XG5cbiAgICAvLyBDYXB0dXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIHB1dCBpdCBpbiB0aGUgSUQgc3RyaW5nLFxuICAgIC8vIHNvIHRoYXQgcmVsZWFzZSBlcnJvcnMgY2FuIGJlIHRyYWNrZWQgZG93biBlYXNpbHkuXG4gICAgY29uc3QgcmVnZXhwID0gL2F0ICguKikvZ2k7XG4gICAgY29uc3Qgc3RhY2tTdHJpbmcgPSAobmV3IEVycm9yKCkpLnN0YWNrO1xuICAgIGlmICghc3RhY2tTdHJpbmcpIHJldHVybjtcblxuICAgIGxldCBmaWxlbmFtZUFuZExpbmU7XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0YWNrU3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbWF0Y2hbMV07XG4gICAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoJyhuYXRpdmUpJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCcoPGFub255bW91cz4pJykpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKCdlbGVjdHJvbi9qczJjJykpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZWYgPSAvKFteL14pXSopXFwpPyQvZ2kuZXhlYyhsb2NhdGlvbik7XG4gICAgICBpZiAocmVmKSBmaWxlbmFtZUFuZExpbmUgPSByZWYhWzFdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsYmFja3NbaWRdID0gY2FsbGJhY2s7XG4gICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcsIGlkKTtcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoY2FsbGJhY2ssICdsb2NhdGlvbicsIGZpbGVuYW1lQW5kTGluZSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0IChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2tzW2lkXSB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIGFwcGx5IChpZDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmdldChpZCkuYXBwbHkoZ2xvYmFsLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHJlbW92ZSAoaWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaWRdO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdjhVdGlsLmRlbGV0ZUhpZGRlblZhbHVlKGNhbGxiYWNrLCAnY2FsbGJhY2tJZCcpO1xuICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2lkXTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy9ldmVudCc7XG5cbmNsYXNzIFRhYiB7XG4gIHB1YmxpYyBpZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gdGFiSWQ7XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNlbmRlciB7XG4gIHB1YmxpYyB0YWI6IFRhYiB8IG51bGxcbiAgcHVibGljIGlkOiBzdHJpbmdcbiAgcHVibGljIHVybDogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IgKHRhYklkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYiA9IHRhYklkID8gbmV3IFRhYih0YWJJZCkgOiBudWxsO1xuICAgIHRoaXMuaWQgPSBleHRlbnNpb25JZDtcbiAgICB0aGlzLnVybCA9IGBjaHJvbWUtZXh0ZW5zaW9uOi8vJHtleHRlbnNpb25JZH1gO1xuICB9XG59XG5cbmNsYXNzIFBvcnQge1xuICBwdWJsaWMgZGlzY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2VcbiAgcHVibGljIG9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpXG4gIHB1YmxpYyBvbk1lc3NhZ2UgPSBuZXcgRXZlbnQoKVxuICBwdWJsaWMgc2VuZGVyOiBNZXNzYWdlU2VuZGVyXG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB0YWJJZDogbnVtYmVyLCBwdWJsaWMgcG9ydElkOiBudW1iZXIsIGV4dGVuc2lvbklkOiBzdHJpbmcsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRGlzY29ubmVjdCA9IG5ldyBFdmVudCgpO1xuICAgIHRoaXMub25NZXNzYWdlID0gbmV3IEV2ZW50KCk7XG4gICAgdGhpcy5zZW5kZXIgPSBuZXcgTWVzc2FnZVNlbmRlcih0YWJJZCwgZXh0ZW5zaW9uSWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7cG9ydElkfWAsICgpID0+IHtcbiAgICAgIHRoaXMuX29uRGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgQ0hST01FX1BPUlRfUE9TVE1FU1NBR0VfJHtwb3J0SWR9YCwgKFxuICAgICAgX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgbWVzc2FnZTogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBzZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUuZXJyb3IoJ3NlbmRSZXNwb25zZSBpcyBub3QgaW1wbGVtZW50ZWQnKTsgfTtcbiAgICAgIHRoaXMub25NZXNzYWdlLmVtaXQoSlNPTi5wYXJzZShtZXNzYWdlKSwgdGhpcy5zZW5kZXIsIHNlbmRSZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAodGhpcy5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvQWxsKHRoaXMudGFiSWQsIGBDSFJPTUVfUE9SVF9ESVNDT05ORUNUXyR7dGhpcy5wb3J0SWR9YCk7XG4gICAgdGhpcy5fb25EaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0TWVzc2FnZSAobWVzc2FnZTogYW55KSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwodGhpcy50YWJJZCwgYENIUk9NRV9QT1JUX1BPU1RNRVNTQUdFXyR7dGhpcy5wb3J0SWR9YCwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xuICB9XG5cbiAgX29uRGlzY29ubmVjdCAoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwucmVtb3ZlQWxsTGlzdGVuZXJzKGBDSFJPTUVfUE9SVF9QT1NUTUVTU0FHRV8ke3RoaXMucG9ydElkfWApO1xuICAgIHRoaXMub25EaXNjb25uZWN0LmVtaXQoKTtcbiAgfVxufVxuXG4vLyBJbmplY3QgY2hyb21lIEFQSSB0byB0aGUgfGNvbnRleHR8XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VG8gKGV4dGVuc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICBjb25zdCBjaHJvbWUgPSBjb250ZXh0LmNocm9tZSA9IGNvbnRleHQuY2hyb21lIHx8IHt9O1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYENIUk9NRV9SVU5USU1FX09OQ09OTkVDVF8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBwb3J0SWQ6IG51bWJlciwgY29ubmVjdEluZm86IHsgbmFtZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LmVtaXQobmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpKTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoYENIUk9NRV9SVU5USU1FX09OTUVTU0FHRV8ke2V4dGVuc2lvbklkfWAsIChcbiAgICBfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY2hyb21lLnJ1bnRpbWUub25NZXNzYWdlLmVtaXQobWVzc2FnZSwgbmV3IE1lc3NhZ2VTZW5kZXIodGFiSWQsIGV4dGVuc2lvbklkKSwgcmVzb2x2ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0NIUk9NRV9UQUJTX09OQ1JFQVRFRCcsIChfZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LCB0YWJJZDogbnVtYmVyKSA9PiB7XG4gICAgY2hyb21lLnRhYnMub25DcmVhdGVkLmVtaXQobmV3IFRhYih0YWJJZCkpO1xuICB9KTtcblxuICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdDSFJPTUVfVEFCU19PTlJFTU9WRUQnLCAoX2V2ZW50OiBFbGVjdHJvbi5FdmVudCwgdGFiSWQ6IG51bWJlcikgPT4ge1xuICAgIGNocm9tZS50YWJzLm9uUmVtb3ZlZC5lbWl0KHRhYklkKTtcbiAgfSk7XG5cbiAgY2hyb21lLnJ1bnRpbWUgPSB7XG4gICAgaWQ6IGV4dGVuc2lvbklkLFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldFVSTFxuICAgIGdldFVSTDogZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHVybC5mb3JtYXQoe1xuICAgICAgICBwcm90b2NvbDogJ2Nocm9tZS1leHRlbnNpb24nLFxuICAgICAgICBzbGFzaGVzOiB0cnVlLFxuICAgICAgICBob3N0bmFtZTogZXh0ZW5zaW9uSWQsXG4gICAgICAgIHBhdGhuYW1lOiBwYXRoXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3J1bnRpbWUjbWV0aG9kLWdldE1hbmlmZXN0XG4gICAgZ2V0TWFuaWZlc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdDSFJPTUVfRVhURU5TSU9OX01BTklGRVNUJywgZXh0ZW5zaW9uSWQpO1xuICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2QtY29ubmVjdFxuICAgIGNvbm5lY3QgKC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIC8vIFBhcnNlIHRoZSBvcHRpb25hbCBhcmdzLlxuICAgICAgbGV0IHRhcmdldEV4dGVuc2lvbklkID0gZXh0ZW5zaW9uSWQ7XG4gICAgICBsZXQgY29ubmVjdEluZm8gPSB7IG5hbWU6ICcnIH07XG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRhcmdldEV4dGVuc2lvbklkID0gYXJnc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0SW5mbyA9IGFyZ3NbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgW3RhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mb10gPSBhcmdzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHRhYklkLCBwb3J0SWQgfSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnQ0hST01FX1JVTlRJTUVfQ09OTkVDVCcsIHRhcmdldEV4dGVuc2lvbklkLCBjb25uZWN0SW5mbyk7XG4gICAgICByZXR1cm4gbmV3IFBvcnQodGFiSWQsIHBvcnRJZCwgZXh0ZW5zaW9uSWQsIGNvbm5lY3RJbmZvLm5hbWUpO1xuICAgIH0sXG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvcnVudGltZSNtZXRob2Qtc2VuZE1lc3NhZ2VcbiAgICBzZW5kTWVzc2FnZSAoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgLy8gUGFyc2UgdGhlIG9wdGlvbmFsIGFyZ3MuXG4gICAgICBjb25zdCB0YXJnZXRFeHRlbnNpb25JZCA9IGV4dGVuc2lvbklkO1xuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIGxldCBvcHRpb25zOiBPYmplY3QgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgcmVzcG9uc2VDYWxsYmFjazogQ2hyb21lLlRhYnMuU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICgpID0+IHt9O1xuXG4gICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXNwb25zZUNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFttZXNzYWdlXSA9IGFyZ3M7XG4gICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2VdID0gYXJncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbbWVzc2FnZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZXh0ZW5zaW9uSWQsIG1lc3NhZ2UsIG9wdGlvbnNdID0gYXJncztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuXG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1JVTlRJTUVfU0VORF9NRVNTQUdFJywgdGFyZ2V0RXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uQ29ubmVjdDogbmV3IEV2ZW50KCksXG4gICAgb25NZXNzYWdlOiBuZXcgRXZlbnQoKSxcbiAgICBvbkluc3RhbGxlZDogbmV3IEV2ZW50KClcbiAgfTtcblxuICBjaHJvbWUudGFicyA9IHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvdGFicyNtZXRob2QtZXhlY3V0ZVNjcmlwdFxuICAgIGV4ZWN1dGVTY3JpcHQgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIGRldGFpbHM6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHREZXRhaWxzLFxuICAgICAgcmVzdWx0Q2FsbGJhY2s6IENocm9tZS5UYWJzLkV4ZWN1dGVTY3JpcHRDYWxsYmFjayA9ICgpID0+IHt9XG4gICAgKSB7XG4gICAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnQ0hST01FX1RBQlNfRVhFQ1VURV9TQ1JJUFQnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIGRldGFpbHMpXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0Q2FsbGJhY2soW3Jlc3VsdF0pKTtcbiAgICB9LFxuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3RhYnMjbWV0aG9kLXNlbmRNZXNzYWdlXG4gICAgc2VuZE1lc3NhZ2UgKFxuICAgICAgdGFiSWQ6IG51bWJlcixcbiAgICAgIG1lc3NhZ2U6IGFueSxcbiAgICAgIF9vcHRpb25zOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZURldGFpbHMsXG4gICAgICByZXNwb25zZUNhbGxiYWNrOiBDaHJvbWUuVGFicy5TZW5kTWVzc2FnZUNhbGxiYWNrID0gKCkgPT4ge31cbiAgICApIHtcbiAgICAgIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdDSFJPTUVfVEFCU19TRU5EX01FU1NBR0UnLCB0YWJJZCwgZXh0ZW5zaW9uSWQsIG1lc3NhZ2UpLnRoZW4ocmVzcG9uc2VDYWxsYmFjayk7XG4gICAgfSxcblxuICAgIG9uVXBkYXRlZDogbmV3IEV2ZW50KCksXG4gICAgb25DcmVhdGVkOiBuZXcgRXZlbnQoKSxcbiAgICBvblJlbW92ZWQ6IG5ldyBFdmVudCgpXG4gIH07XG5cbiAgY2hyb21lLmV4dGVuc2lvbiA9IHtcbiAgICBnZXRVUkw6IGNocm9tZS5ydW50aW1lLmdldFVSTCxcbiAgICBjb25uZWN0OiBjaHJvbWUucnVudGltZS5jb25uZWN0LFxuICAgIG9uQ29ubmVjdDogY2hyb21lLnJ1bnRpbWUub25Db25uZWN0LFxuICAgIHNlbmRNZXNzYWdlOiBjaHJvbWUucnVudGltZS5zZW5kTWVzc2FnZSxcbiAgICBvbk1lc3NhZ2U6IGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZVxuICB9O1xuXG4gIGNocm9tZS5zdG9yYWdlID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvc3RvcmFnZScpLnNldHVwKGV4dGVuc2lvbklkKTtcblxuICBjaHJvbWUucGFnZUFjdGlvbiA9IHtcbiAgICBzaG93ICgpIHt9LFxuICAgIGhpZGUgKCkge30sXG4gICAgc2V0VGl0bGUgKCkge30sXG4gICAgZ2V0VGl0bGUgKCkge30sXG4gICAgc2V0SWNvbiAoKSB7fSxcbiAgICBzZXRQb3B1cCAoKSB7fSxcbiAgICBnZXRQb3B1cCAoKSB7fVxuICB9O1xuXG4gIGNocm9tZS5pMThuID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvaTE4bicpLnNldHVwKGV4dGVuc2lvbklkKTtcbiAgY2hyb21lLndlYk5hdmlnYXRpb24gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvZXh0ZW5zaW9ucy93ZWItbmF2aWdhdGlvbicpLnNldHVwKCk7XG5cbiAgLy8gRWxlY3Ryb24gaGFzIG5vIGNvbmNlcHQgb2YgYSBicm93c2VyQWN0aW9uIGJ1dCB3ZSBzaG91bGQgc3R1YiB0aGVzZSBBUElzIGZvciBjb21wYXRpYmlsaXR5XG4gIGNocm9tZS5icm93c2VyQWN0aW9uID0ge1xuICAgIHNldEljb24gKCkge30sXG4gICAgc2V0UG9wdXAgKCkge31cbiAgfTtcbn1cbiIsImltcG9ydCB7IHdlYkZyYW1lIH0gZnJvbSAnZWxlY3Ryb24nO1xuXG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG5jb25zdCBJc29sYXRlZFdvcmxkSURzID0ge1xuICAvKipcbiAgICogU3RhcnQgb2YgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkIElEcywgYXMgZGVmaW5lZCBpblxuICAgKiBhdG9tX3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oXG4gICAqL1xuICBJU09MQVRFRF9XT1JMRF9FWFRFTlNJT05TOiAxIDw8IDIwXG59O1xuXG5sZXQgaXNvbGF0ZWRXb3JsZElkcyA9IElzb2xhdGVkV29ybGRJRHMuSVNPTEFURURfV09STERfRVhURU5TSU9OUztcbmNvbnN0IGV4dGVuc2lvbldvcmxkSWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCB1bmRlZmluZWR9ID0ge307XG5cbi8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9leHRlbnNpb25zL3JlbmRlcmVyL3NjcmlwdF9pbmplY3Rpb24uY2M/dHlwZT1jcyZzcT1wYWNrYWdlOmNocm9taXVtJmc9MCZsPTUyXG5jb25zdCBnZXRJc29sYXRlZFdvcmxkSWRGb3JJbnN0YW5jZSA9ICgpID0+IHtcbiAgLy8gVE9ETyhzYW11ZWxtYWRkb2NrKTogYWxsb2NhdGUgYW5kIGNsZWFudXAgSURzXG4gIHJldHVybiBpc29sYXRlZFdvcmxkSWRzKys7XG59O1xuXG5jb25zdCBlc2NhcGVQYXR0ZXJuID0gZnVuY3Rpb24gKHBhdHRlcm46IHN0cmluZykge1xuICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC9bXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuXG4vLyBDaGVjayB3aGV0aGVyIHBhdHRlcm4gbWF0Y2hlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9tYXRjaF9wYXR0ZXJuc1xuY29uc3QgbWF0Y2hlc1BhdHRlcm4gPSBmdW5jdGlvbiAocGF0dGVybjogc3RyaW5nKSB7XG4gIGlmIChwYXR0ZXJuID09PSAnPGFsbF91cmxzPicpIHJldHVybiB0cnVlO1xuICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuLnNwbGl0KCcqJykubWFwKGVzY2FwZVBhdHRlcm4pLmpvaW4oJy4qJyl9JGApO1xuICBjb25zdCB1cmwgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH0ke2xvY2F0aW9uLnBhdGhuYW1lfWA7XG4gIHJldHVybiB1cmwubWF0Y2gocmVnZXhwKTtcbn07XG5cbi8vIFJ1biB0aGUgY29kZSB3aXRoIGNocm9tZSBBUEkgaW50ZWdyYXRlZC5cbmNvbnN0IHJ1bkNvbnRlbnRTY3JpcHQgPSBmdW5jdGlvbiAodGhpczogYW55LCBleHRlbnNpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIC8vIEFzc2lnbiB1bmlxdWUgd29ybGQgSUQgdG8gZWFjaCBleHRlbnNpb25cbiAgY29uc3Qgd29ybGRJZCA9IGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdIHx8XG4gICAgKGV4dGVuc2lvbldvcmxkSWRbZXh0ZW5zaW9uSWRdID0gZ2V0SXNvbGF0ZWRXb3JsZElkRm9ySW5zdGFuY2UoKSk7XG5cbiAgLy8gc3RvcmUgZXh0ZW5zaW9uIElEIGZvciBjb250ZW50IHNjcmlwdCB0byByZWFkIGluIGlzb2xhdGVkIHdvcmxkXG4gIHY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsIGBleHRlbnNpb24tJHt3b3JsZElkfWAsIGV4dGVuc2lvbklkKTtcblxuICB3ZWJGcmFtZS5zZXRJc29sYXRlZFdvcmxkSW5mbyh3b3JsZElkLCB7XG4gICAgbmFtZTogYCR7ZXh0ZW5zaW9uSWR9IFske3dvcmxkSWR9XWBcbiAgICAvLyBUT0RPKHNhbXVlbG1hZGRvY2spOiByZWFkIGBjb250ZW50X3NlY3VyaXR5X3BvbGljeWAgZnJvbSBleHRlbnNpb24gbWFuaWZlc3RcbiAgICAvLyBjc3A6IG1hbmlmZXN0LmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LFxuICB9KTtcblxuICBjb25zdCBzb3VyY2VzID0gW3sgY29kZSwgdXJsIH1dO1xuICByZXR1cm4gd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQod29ybGRJZCwgc291cmNlcyk7XG59O1xuXG5jb25zdCBydW5BbGxDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKHNjcmlwdHM6IEFycmF5PEVsZWN0cm9uLkluamVjdGlvbkJhc2U+LCBleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgeyB1cmwsIGNvZGUgfSBvZiBzY3JpcHRzKSB7XG4gICAgcnVuQ29udGVudFNjcmlwdC5jYWxsKHdpbmRvdywgZXh0ZW5zaW9uSWQsIHVybCwgY29kZSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1blN0eWxlc2hlZXQgPSBmdW5jdGlvbiAodGhpczogYW55LCB1cmw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gIHdlYkZyYW1lLmluc2VydENTUyhjb2RlKTtcbn07XG5cbmNvbnN0IHJ1bkFsbFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoY3NzOiBBcnJheTxFbGVjdHJvbi5JbmplY3Rpb25CYXNlPikge1xuICBmb3IgKGNvbnN0IHsgdXJsLCBjb2RlIH0gb2YgY3NzKSB7XG4gICAgcnVuU3R5bGVzaGVldC5jYWxsKHdpbmRvdywgdXJsLCBjb2RlKTtcbiAgfVxufTtcblxuLy8gUnVuIGluamVjdGVkIHNjcmlwdHMuXG4vLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvY29udGVudF9zY3JpcHRzXG5jb25zdCBpbmplY3RDb250ZW50U2NyaXB0ID0gZnVuY3Rpb24gKGV4dGVuc2lvbklkOiBzdHJpbmcsIHNjcmlwdDogRWxlY3Ryb24uQ29udGVudFNjcmlwdCkge1xuICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUgJiYgIXNjcmlwdC5hbGxGcmFtZXMpIHJldHVybjtcbiAgaWYgKCFzY3JpcHQubWF0Y2hlcy5zb21lKG1hdGNoZXNQYXR0ZXJuKSkgcmV0dXJuO1xuXG4gIGlmIChzY3JpcHQuanMpIHtcbiAgICBjb25zdCBmaXJlID0gcnVuQWxsQ29udGVudFNjcmlwdC5iaW5kKHdpbmRvdywgc2NyaXB0LmpzLCBleHRlbnNpb25JZCk7XG4gICAgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X3N0YXJ0Jykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1zdGFydCcsIGZpcmUpO1xuICAgIH0gZWxzZSBpZiAoc2NyaXB0LnJ1bkF0ID09PSAnZG9jdW1lbnRfZW5kJykge1xuICAgICAgcHJvY2Vzcy5vbmNlKCdkb2N1bWVudC1lbmQnLCBmaXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpcmUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgY29uc3QgZmlyZSA9IHJ1bkFsbFN0eWxlc2hlZXQuYmluZCh3aW5kb3csIHNjcmlwdC5jc3MpO1xuICAgIGlmIChzY3JpcHQucnVuQXQgPT09ICdkb2N1bWVudF9zdGFydCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtc3RhcnQnLCBmaXJlKTtcbiAgICB9IGVsc2UgaWYgKHNjcmlwdC5ydW5BdCA9PT0gJ2RvY3VtZW50X2VuZCcpIHtcbiAgICAgIHByb2Nlc3Mub25jZSgnZG9jdW1lbnQtZW5kJywgZmlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIEhhbmRsZSB0aGUgcmVxdWVzdCBvZiBjaHJvbWUudGFicy5leGVjdXRlSmF2YVNjcmlwdC5cbmlwY1JlbmRlcmVyVXRpbHMuaGFuZGxlKCdDSFJPTUVfVEFCU19FWEVDVVRFX1NDUklQVCcsIGZ1bmN0aW9uIChcbiAgZXZlbnQ6IEVsZWN0cm9uLkV2ZW50LFxuICBleHRlbnNpb25JZDogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgY29kZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIHJ1bkNvbnRlbnRTY3JpcHQuY2FsbCh3aW5kb3csIGV4dGVuc2lvbklkLCB1cmwsIGNvZGUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gKGVudHJpZXM6IEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdKSA9PiB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmIChlbnRyeS5jb250ZW50U2NyaXB0cykge1xuICAgICAgZm9yIChjb25zdCBzY3JpcHQgb2YgZW50cnkuY29udGVudFNjcmlwdHMpIHtcbiAgICAgICAgaW5qZWN0Q29udGVudFNjcmlwdChlbnRyeS5leHRlbnNpb25JZCwgc2NyaXB0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iLCJleHBvcnQgY2xhc3MgRXZlbnQge1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdXG5cbiAgYWRkTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBlbWl0ICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgY2hyb21lLmkxOG4uZ2V0TWVzc2FnZVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL2kxOG4jbWV0aG9kLWdldE1lc3NhZ2Vcbi8vXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQgcHJlZGVmaW5lZCBtZXNzYWdlczpcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9pMThuI292ZXJ2aWV3LXByZWRlZmluZWRcblxuaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW50ZXJmYWNlIFBsYWNlaG9sZGVyIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBleGFtcGxlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNZXNzYWdlcyA9IChleHRlbnNpb25JZDogbnVtYmVyKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYzxzdHJpbmc+KCdDSFJPTUVfR0VUX01FU1NBR0VTJywgZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIHx8IHt9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMgPSAobWVzc2FnZTogc3RyaW5nLCBzdWJzdGl0dXRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC9cXCQoXFxkKykvLCAoXywgbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChudW1iZXIsIDEwKSAtIDE7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNbaW5kZXhdIHx8ICcnO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlcGxhY2VQbGFjZWhvbGRlcnMgPSAobWVzc2FnZTogc3RyaW5nLCBwbGFjZWhvbGRlcnM6IFJlY29yZDxzdHJpbmcsIFBsYWNlaG9sZGVyPiwgc3Vic3RpdHV0aW9uczogc3RyaW5nW10gfCBzdHJpbmcpID0+IHtcbiAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb25zID09PSAnc3RyaW5nJykgc3Vic3RpdHV0aW9ucyA9IFtzdWJzdGl0dXRpb25zXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpKSBzdWJzdGl0dXRpb25zID0gW107XG5cbiAgaWYgKHBsYWNlaG9sZGVycykge1xuICAgIE9iamVjdC5rZXlzKHBsYWNlaG9sZGVycykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgeyBjb250ZW50IH0gPSBwbGFjZWhvbGRlcnNbbmFtZV07XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KHN1YnN0aXR1dGlvbnMpID8gc3Vic3RpdHV0aW9ucyA6IFtdO1xuICAgICAgY29udGVudCA9IHJlcGxhY2VOdW1iZXJlZFN1YnN0aXR1dGlvbnMoY29udGVudCwgc3Vic3RpdHV0aW9uc0FycmF5KTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCQke25hbWV9XFxcXCRgLCAnZ2knKSwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZU51bWJlcmVkU3Vic3RpdHV0aW9ucyhtZXNzYWdlLCBzdWJzdGl0dXRpb25zKTtcbn07XG5cbmNvbnN0IGdldE1lc3NhZ2UgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlciwgbWVzc2FnZU5hbWU6IHN0cmluZywgc3Vic3RpdHV0aW9uczogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlcyhleHRlbnNpb25JZCk7XG4gIGlmIChtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShtZXNzYWdlTmFtZSkpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHBsYWNlaG9sZGVycyB9ID0gbWVzc2FnZXNbbWVzc2FnZU5hbWVdO1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzKG1lc3NhZ2UsIHBsYWNlaG9sZGVycywgc3Vic3RpdHV0aW9ucyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0dXAgPSAoZXh0ZW5zaW9uSWQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4ge1xuICAgIGdldE1lc3NhZ2UgKG1lc3NhZ2VOYW1lOiBzdHJpbmcsIHN1YnN0aXR1dGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgICByZXR1cm4gZ2V0TWVzc2FnZShleHRlbnNpb25JZCwgbWVzc2FnZU5hbWUsIHN1YnN0aXR1dGlvbnMpO1xuICAgIH1cbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIsIGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCcpO1xuXG4gIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlPHN0cmluZz4oJ0NIUk9NRV9TVE9SQUdFX1JFQUQnLCBzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQpXG4gICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICBjYWxsYmFjayhKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGNhbGxiYWNrKHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0b3JhZ2UgPSAoc3RvcmFnZVR5cGU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IG51bWJlciwgc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0NIUk9NRV9TVE9SQUdFX1dSSVRFJywgc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBqc29uKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VNYW5hZ2VyID0gKHN0b3JhZ2VUeXBlOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgIGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCAoc3RvcmFnZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICBpZiAoa2V5cyA9PSBudWxsKSByZXR1cm4gY2FsbGJhY2soc3RvcmFnZSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGtleXMpIHtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgICAgZGVmYXVsdHMgPSBrZXlzO1xuICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMoa2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGVkIGR1ZSB0byBmYWxzZSBwb3NpdGl2ZSBpbiBTdGFuZGFyZEpTXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdGFuZGFyZC9uby1jYWxsYmFjay1saXRlcmFsXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKHt9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHZhbHVlID0gc3RvcmFnZVtrZXldO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB2YWx1ZSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgaXRlbXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FsbGJhY2soaXRlbXMpO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHNldCAoaXRlbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKG5hbWUgPT4geyBzdG9yYWdlW25hbWVdID0gaXRlbXNbbmFtZV07IH0pO1xuICAgICAgICBzZXRTdG9yYWdlKHN0b3JhZ2VUeXBlLCBleHRlbnNpb25JZCwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIHJlbW92ZSAoa2V5czogc3RyaW5nW10sIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIChzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkga2V5cyA9IFtrZXlzXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBzdG9yYWdlW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFN0b3JhZ2Uoc3RvcmFnZVR5cGUsIGV4dGVuc2lvbklkLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgY2xlYXIgKGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgc2V0U3RvcmFnZShzdG9yYWdlVHlwZSwgZXh0ZW5zaW9uSWQsIHt9LCBjYWxsYmFjayk7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKGV4dGVuc2lvbklkOiBudW1iZXIpID0+ICh7XG4gIHN5bmM6IGdldFN0b3JhZ2VNYW5hZ2VyKCdzeW5jJywgZXh0ZW5zaW9uSWQpLFxuICBsb2NhbDogZ2V0U3RvcmFnZU1hbmFnZXIoJ2xvY2FsJywgZXh0ZW5zaW9uSWQpXG59KTtcbiIsImltcG9ydCB7IEV2ZW50IH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2V4dGVuc2lvbnMvZXZlbnQnO1xuaW1wb3J0IHsgSXBjTWFpbkV2ZW50IH0gZnJvbSAnZWxlY3Ryb24nO1xuY29uc3QgeyBpcGNSZW5kZXJlckludGVybmFsIH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJyk7XG5cbmNsYXNzIFdlYk5hdmlnYXRpb24ge1xuICBwcml2YXRlIG9uQmVmb3JlTmF2aWdhdGUgPSBuZXcgRXZlbnQoKVxuICBwcml2YXRlIG9uQ29tcGxldGVkID0gbmV3IEV2ZW50KClcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05CRUZPUkVOQVZJR0FURScsIChldmVudDogSXBjTWFpbkV2ZW50LCBkZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub25CZWZvcmVOYXZpZ2F0ZS5lbWl0KGRldGFpbHMpO1xuICAgIH0pO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbignQ0hST01FX1dFQk5BVklHQVRJT05fT05DT01QTEVURUQnLCAoZXZlbnQ6IElwY01haW5FdmVudCwgZGV0YWlsczogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ29tcGxldGVkLmVtaXQoZGV0YWlscyk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKCkgPT4gbmV3IFdlYk5hdmlnYXRpb24oKTtcbiIsImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKTtcblxuLy8gTWFrZSBzdXJlIGdsb2JhbHMgbGlrZSBcInByb2Nlc3NcIiBhbmQgXCJnbG9iYWxcIiBhcmUgYWx3YXlzIGF2YWlsYWJsZSBpbiBwcmVsb2FkXG4vLyBzY3JpcHRzIGV2ZW4gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBpbiBcImxvYWRlZFwiIHNjcmlwdC5cbi8vXG4vLyBOb3RlIDE6IFdlIHJlbHkgb24gYSBOb2RlIHBhdGNoIHRvIGFjdHVhbGx5IHBhc3MgXCJwcm9jZXNzXCIgYW5kIFwiZ2xvYmFsXCIgYW5kXG4vLyBvdGhlciBhcmd1bWVudHMgdG8gdGhlIHdyYXBwZXIuXG4vL1xuLy8gTm90ZSAyOiBOb2RlIGludHJvZHVjZWQgYSBuZXcgY29kZSBwYXRoIHRvIHVzZSBuYXRpdmUgY29kZSB0byB3cmFwIG1vZHVsZVxuLy8gY29kZSwgd2hpY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgaGFjay4gSG93ZXZlciBieSBtb2RpZnlpbmcgdGhlXG4vLyBcIk1vZHVsZS53cmFwcGVyXCIgd2UgY2FuIGZvcmNlIE5vZGUgdG8gdXNlIHRoZSBvbGQgY29kZSBwYXRoIHRvIHdyYXAgbW9kdWxlXG4vLyBjb2RlIHdpdGggSmF2YVNjcmlwdC5cbi8vXG4vLyBOb3RlIDM6IFdlIHByb3ZpZGUgdGhlIGVxdWl2YWxlbnQgZXh0cmEgdmFyaWFibGVzIGludGVybmFsbHkgdGhyb3VnaCB0aGVcbi8vIHdlYnBhY2sgUHJvdmlkZVBsdWdpbiBpbiB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzLiAgSWYgeW91IGFkZCBhbnkgZXh0cmFcbi8vIHZhcmlhYmxlcyB0byB0aGlzIHdyYXBwZXIgcGxlYXNlIGVuc3VyZSB0byB1cGRhdGUgdGhhdCBwbHVnaW4gYXMgd2VsbC5cbk1vZHVsZS53cmFwcGVyID0gW1xuICAnKGZ1bmN0aW9uIChleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgcHJvY2VzcywgZ2xvYmFsLCBCdWZmZXIpIHsgJyArXG4gIC8vIEJ5IHJ1bm5pbmcgdGhlIGNvZGUgaW4gYSBuZXcgY2xvc3VyZSwgaXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBtb2R1bGVcbiAgLy8gY29kZSB0byBvdmVycmlkZSBcInByb2Nlc3NcIiBhbmQgXCJCdWZmZXJcIiB3aXRoIGxvY2FsIHZhcmlhYmxlcy5cbiAgJ3JldHVybiBmdW5jdGlvbiAoZXhwb3J0cywgcmVxdWlyZSwgbW9kdWxlLCBfX2ZpbGVuYW1lLCBfX2Rpcm5hbWUpIHsgJyxcbiAgJ1xcbn0uY2FsbCh0aGlzLCBleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSk7IH0pOydcbl07XG5cbi8vIFdlIG1vZGlmaWVkIHRoZSBvcmlnaW5hbCBwcm9jZXNzLmFyZ3YgdG8gbGV0IG5vZGUuanMgbG9hZCB0aGVcbi8vIGluaXQuanMsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBoZXJlLlxucHJvY2Vzcy5hcmd2LnNwbGljZSgxLCAxKTtcblxuLy8gQ2xlYXIgc2VhcmNoIHBhdGhzLlxuXG5yZXF1aXJlKCcuLi9jb21tb24vcmVzZXQtc2VhcmNoLXBhdGhzJyk7XG5cbi8vIEltcG9ydCBjb21tb24gc2V0dGluZ3MuXG5yZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL2luaXQnKTtcblxuLy8gVGhlIGdsb2JhbCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgYnkgaXBjIGZvciBldmVudCBkaXNwYXRjaGluZ1xuY29uc3QgdjhVdGlsID0gcHJvY2Vzcy5lbGVjdHJvbkJpbmRpbmcoJ3Y4X3V0aWwnKTtcblxuY29uc3QgaXBjRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmNvbnN0IGlwY0ludGVybmFsRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMnLCBpcGNFbWl0dGVyKTtcbnY4VXRpbC5zZXRIaWRkZW5WYWx1ZShnbG9iYWwsICdpcGMtaW50ZXJuYWwnLCBpcGNJbnRlcm5hbEVtaXR0ZXIpO1xuXG52OFV0aWwuc2V0SGlkZGVuVmFsdWUoZ2xvYmFsLCAnaXBjTmF0aXZlJywge1xuICBvbk1lc3NhZ2UgKGludGVybmFsOiBib29sZWFuLCBjaGFubmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdLCBzZW5kZXJJZDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gaW50ZXJuYWwgPyBpcGNJbnRlcm5hbEVtaXR0ZXIgOiBpcGNFbWl0dGVyO1xuICAgIHNlbmRlci5lbWl0KGNoYW5uZWwsIHsgc2VuZGVyLCBzZW5kZXJJZCB9LCAuLi5hcmdzKTtcbiAgfVxufSk7XG5cbi8vIFVzZSBlbGVjdHJvbiBtb2R1bGUgYWZ0ZXIgZXZlcnl0aGluZyBpcyByZWFkeS5cbmNvbnN0IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCcpO1xuY29uc3QgaXBjUmVuZGVyZXJVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnKTtcbmNvbnN0IHsgd2ViRnJhbWVJbml0IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLWZyYW1lLWluaXQnKTtcbndlYkZyYW1lSW5pdCgpO1xuXG4vLyBQcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuXG5jb25zdCB7IGhhc1N3aXRjaCwgZ2V0U3dpdGNoVmFsdWUgfSA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdjb21tYW5kX2xpbmUnKTtcblxuY29uc3QgcGFyc2VPcHRpb24gPSBmdW5jdGlvbjxUPiAoXG4gIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCBjb252ZXJ0ZXI/OiAodmFsdWU6IHN0cmluZykgPT4gVFxuKSB7XG4gIHJldHVybiBoYXNTd2l0Y2gobmFtZSlcbiAgICA/IChcbiAgICAgIGNvbnZlcnRlclxuICAgICAgICA/IGNvbnZlcnRlcihnZXRTd2l0Y2hWYWx1ZShuYW1lKSlcbiAgICAgICAgOiBnZXRTd2l0Y2hWYWx1ZShuYW1lKVxuICAgIClcbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGNvbnRleHRJc29sYXRpb24gPSBoYXNTd2l0Y2goJ2NvbnRleHQtaXNvbGF0aW9uJyk7XG5jb25zdCBub2RlSW50ZWdyYXRpb24gPSBoYXNTd2l0Y2goJ25vZGUtaW50ZWdyYXRpb24nKTtcbmNvbnN0IHdlYnZpZXdUYWcgPSBoYXNTd2l0Y2goJ3dlYnZpZXctdGFnJyk7XG5jb25zdCBpc0hpZGRlblBhZ2UgPSBoYXNTd2l0Y2goJ2hpZGRlbi1wYWdlJyk7XG5jb25zdCB1c2VzTmF0aXZlV2luZG93T3BlbiA9IGhhc1N3aXRjaCgnbmF0aXZlLXdpbmRvdy1vcGVuJyk7XG5cbmNvbnN0IHByZWxvYWRTY3JpcHQgPSBwYXJzZU9wdGlvbigncHJlbG9hZCcsIG51bGwpO1xuY29uc3QgcHJlbG9hZFNjcmlwdHMgPSBwYXJzZU9wdGlvbigncHJlbG9hZC1zY3JpcHRzJywgW10sIHZhbHVlID0+IHZhbHVlLnNwbGl0KHBhdGguZGVsaW1pdGVyKSkgYXMgc3RyaW5nW107XG5jb25zdCBhcHBQYXRoID0gcGFyc2VPcHRpb24oJ2FwcC1wYXRoJywgbnVsbCk7XG5jb25zdCBndWVzdEluc3RhbmNlSWQgPSBwYXJzZU9wdGlvbignZ3Vlc3QtaW5zdGFuY2UtaWQnLCBudWxsLCB2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xuY29uc3Qgb3BlbmVySWQgPSBwYXJzZU9wdGlvbignb3BlbmVyLWlkJywgbnVsbCwgdmFsdWUgPT4gcGFyc2VJbnQodmFsdWUpKTtcblxuLy8gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gaXNvbGF0ZWQgd29ybGQuXG5jb25zdCBpc29sYXRlZFdvcmxkQXJncyA9IHsgaXBjUmVuZGVyZXJJbnRlcm5hbCwgZ3Vlc3RJbnN0YW5jZUlkLCBpc0hpZGRlblBhZ2UsIG9wZW5lcklkLCB1c2VzTmF0aXZlV2luZG93T3BlbiB9O1xuXG4vLyBUaGUgd2ViQ29udGVudHMgcHJlbG9hZCBzY3JpcHQgaXMgbG9hZGVkIGFmdGVyIHRoZSBzZXNzaW9uIHByZWxvYWQgc2NyaXB0cy5cbmlmIChwcmVsb2FkU2NyaXB0KSB7XG4gIHByZWxvYWRTY3JpcHRzLnB1c2gocHJlbG9hZFNjcmlwdCk7XG59XG5cbnN3aXRjaCAod2luZG93LmxvY2F0aW9uLnByb3RvY29sKSB7XG4gIGNhc2UgJ2RldnRvb2xzOic6IHtcbiAgICAvLyBPdmVycmlkZSBzb21lIGluc3BlY3RvciBBUElzLlxuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pbnNwZWN0b3InKTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlICdjaHJvbWUtZXh0ZW5zaW9uOic6IHtcbiAgICAvLyBJbmplY3QgdGhlIGNocm9tZS4qIEFQSXMgdGhhdCBjaHJvbWUgZXh0ZW5zaW9ucyByZXF1aXJlXG4gICAgcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2Nocm9tZS1hcGknKS5pbmplY3RUbyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIHdpbmRvdyk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSAnY2hyb21lOic6XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6IHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IHdlYiBmdW5jdGlvbnMuXG4gICAgY29uc3QgeyB3aW5kb3dTZXR1cCB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dpbmRvdy1zZXR1cCcpO1xuICAgIHdpbmRvd1NldHVwKGd1ZXN0SW5zdGFuY2VJZCwgb3BlbmVySWQsIGlzSGlkZGVuUGFnZSwgdXNlc05hdGl2ZVdpbmRvd09wZW4pO1xuXG4gICAgLy8gSW5qZWN0IGNvbnRlbnQgc2NyaXB0cy5cbiAgICBjb25zdCBjb250ZW50U2NyaXB0cyA9IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlU3luYygnRUxFQ1RST05fR0VUX0NPTlRFTlRfU0NSSVBUUycpIGFzIEVsZWN0cm9uLkNvbnRlbnRTY3JpcHRFbnRyeVtdO1xuICAgIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9jb250ZW50LXNjcmlwdHMtaW5qZWN0b3InKShjb250ZW50U2NyaXB0cyk7XG4gIH1cbn1cblxuLy8gTG9hZCB3ZWJ2aWV3IHRhZyBpbXBsZW1lbnRhdGlvbi5cbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgd2ViVmlld0luaXQgfSA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1pbml0Jyk7XG4gIHdlYlZpZXdJbml0KGNvbnRleHRJc29sYXRpb24sIHdlYnZpZXdUYWcsIGd1ZXN0SW5zdGFuY2VJZCk7XG59XG5cbi8vIFBhc3MgdGhlIGFyZ3VtZW50cyB0byBpc29sYXRlZFdvcmxkLlxuaWYgKGNvbnRleHRJc29sYXRpb24pIHtcbiAgdjhVdGlsLnNldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lzb2xhdGVkLXdvcmxkLWFyZ3MnLCBpc29sYXRlZFdvcmxkQXJncyk7XG59XG5cbmlmIChub2RlSW50ZWdyYXRpb24pIHtcbiAgLy8gRXhwb3J0IG5vZGUgYmluZGluZ3MgdG8gZ2xvYmFsLlxuICBjb25zdCB7IG1ha2VSZXF1aXJlRnVuY3Rpb24gfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKCdpbnRlcm5hbC9tb2R1bGVzL2Nqcy9oZWxwZXJzJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICBnbG9iYWwubW9kdWxlID0gbmV3IE1vZHVsZSgnZWxlY3Ryb24vanMyYy9yZW5kZXJlcl9pbml0Jyk7XG4gIGdsb2JhbC5yZXF1aXJlID0gbWFrZVJlcXVpcmVGdW5jdGlvbihnbG9iYWwubW9kdWxlKTtcblxuICAvLyBTZXQgdGhlIF9fZmlsZW5hbWUgdG8gdGhlIHBhdGggb2YgaHRtbCBmaWxlIGlmIGl0IGlzIGZpbGU6IHByb3RvY29sLlxuICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgbGV0IHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgaWYgKHBhdGhuYW1lWzBdID09PSAnLycpIHBhdGhuYW1lID0gcGF0aG5hbWUuc3Vic3RyKDEpO1xuXG4gICAgICBjb25zdCBpc1dpbmRvd3NOZXR3b3JrU2hhcmVQYXRoID0gbG9jYXRpb24uaG9zdG5hbWUubGVuZ3RoID4gMCAmJiBwcm9jZXNzLnJlc291cmNlc1BhdGguc3RhcnRzV2l0aCgnXFxcXCcpO1xuICAgICAgaWYgKGlzV2luZG93c05ldHdvcmtTaGFyZVBhdGgpIHtcbiAgICAgICAgcGF0aG5hbWUgPSBgLy8ke2xvY2F0aW9uLmhvc3R9LyR7cGF0aG5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbG9iYWwuX19maWxlbmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZ2xvYmFsLl9fZmlsZW5hbWUpO1xuXG4gICAgLy8gU2V0IG1vZHVsZSdzIGZpbGVuYW1lIHNvIHJlbGF0aXZlIHJlcXVpcmUgY2FuIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgZ2xvYmFsLm1vZHVsZS5maWxlbmFtZSA9IGdsb2JhbC5fX2ZpbGVuYW1lO1xuXG4gICAgLy8gQWxzbyBzZWFyY2ggZm9yIG1vZHVsZSB1bmRlciB0aGUgaHRtbCBmaWxlLlxuICAgIGdsb2JhbC5tb2R1bGUucGF0aHMgPSBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhnbG9iYWwuX19kaXJuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgZmFrZSB0aGVzZSB0d28gcGF0aHMgaGVyZVxuICAgIGdsb2JhbC5fX2ZpbGVuYW1lID0gcGF0aC5qb2luKHByb2Nlc3MucmVzb3VyY2VzUGF0aCwgJ2VsZWN0cm9uLmFzYXInLCAncmVuZGVyZXInLCAnaW5pdC5qcycpO1xuICAgIGdsb2JhbC5fX2Rpcm5hbWUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5yZXNvdXJjZXNQYXRoLCAnZWxlY3Ryb24uYXNhcicsICdyZW5kZXJlcicpO1xuXG4gICAgaWYgKGFwcFBhdGgpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgbW9kdWxlIHVuZGVyIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgICBnbG9iYWwubW9kdWxlLnBhdGhzID0gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoYXBwUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVkaXJlY3Qgd2luZG93Lm9uZXJyb3IgdG8gdW5jYXVnaHRFeGNlcHRpb24uXG4gIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKF9tZXNzYWdlLCBfZmlsZW5hbWUsIF9saW5lbm8sIF9jb2xubywgZXJyb3IpIHtcbiAgICBpZiAoZ2xvYmFsLnByb2Nlc3MubGlzdGVuZXJDb3VudCgndW5jYXVnaHRFeGNlcHRpb24nKSA+IDApIHtcbiAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGFkZCBgdW5jYXVnaHRFeGNlcHRpb25gIHRvIG91ciBkZWZpbml0aW9uc1xuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueW9uZSBlbHNlIChhbnl3aGVyZSkgdG8gdGhyb3cgdGhhdCBraW5kXG4gICAgICAvLyBvZiBlcnJvci5cbiAgICAgIGdsb2JhbC5wcm9jZXNzLmVtaXQoJ3VuY2F1Z2h0RXhjZXB0aW9uJyBhcyBhbnksIGVycm9yIGFzIGFueSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIERlbGV0ZSBOb2RlJ3Mgc3ltYm9scyBhZnRlciB0aGUgRW52aXJvbm1lbnQgaGFzIGJlZW4gbG9hZGVkIGluIGFcbiAgLy8gbm9uIGNvbnRleHQtaXNvbGF0ZWQgZW52aXJvbm1lbnRcbiAgaWYgKCFjb250ZXh0SXNvbGF0aW9uKSB7XG4gICAgcHJvY2Vzcy5vbmNlKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLnByb2Nlc3M7XG4gICAgICBkZWxldGUgZ2xvYmFsLkJ1ZmZlcjtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xuICAgICAgZGVsZXRlIGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbiAgICAgIGRlbGV0ZSBnbG9iYWwuZ2xvYmFsO1xuICAgICAgZGVsZXRlIGdsb2JhbC5yb290O1xuICAgICAgZGVsZXRlIGdsb2JhbC5HTE9CQUw7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgZXJyb3JVdGlscyA9IHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9jb21tb24vZXJyb3ItdXRpbHMnKTtcblxuLy8gTG9hZCB0aGUgcHJlbG9hZCBzY3JpcHRzLlxuZm9yIChjb25zdCBwcmVsb2FkU2NyaXB0IG9mIHByZWxvYWRTY3JpcHRzKSB7XG4gIHRyeSB7XG4gICAgTW9kdWxlLl9sb2FkKHByZWxvYWRTY3JpcHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBsb2FkIHByZWxvYWQgc2NyaXB0OiAke3ByZWxvYWRTY3JpcHR9YCk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX0JST1dTRVJfUFJFTE9BRF9FUlJPUicsIHByZWxvYWRTY3JpcHQsIGVycm9yVXRpbHMuc2VyaWFsaXplKGVycm9yKSk7XG4gIH1cbn1cblxuLy8gV2FybiBhYm91dCBzZWN1cml0eSBpc3N1ZXNcbmlmIChwcm9jZXNzLmlzTWFpbkZyYW1lKSB7XG4gIGNvbnN0IHsgc2VjdXJpdHlXYXJuaW5ncyB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3NlY3VyaXR5LXdhcm5pbmdzJyk7XG4gIHNlY3VyaXR5V2FybmluZ3Mobm9kZUludGVncmF0aW9uKTtcbn1cbiIsImltcG9ydCB7IGludm9rZSwgaW52b2tlU3luYyB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG53aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAvLyBVc2UgbWVudSBBUEkgdG8gc2hvdyBjb250ZXh0IG1lbnUuXG4gIHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QhLnNob3dDb250ZXh0TWVudUF0UG9pbnQgPSBjcmVhdGVNZW51O1xuXG4gIC8vIGNvcnJlY3QgZm9yIENocm9taXVtIHJldHVybmluZyB1bmRlZmluZWQgZm9yIGZpbGVzeXN0ZW1cbiAgd2luZG93LlBlcnNpc3RlbmNlIS5GaWxlU3lzdGVtV29ya3NwYWNlQmluZGluZy5jb21wbGV0ZVVSTCA9IGNvbXBsZXRlVVJMO1xuXG4gIC8vIFVzZSBkaWFsb2cgQVBJIHRvIG92ZXJyaWRlIGZpbGUgY2hvb3NlciBkaWFsb2cuXG4gIHdpbmRvdy5VSSEuY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCA9IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQ7XG59O1xuXG4vLyBFeHRyYSAvIGlzIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBNYWNPUyByZXF1aXJpbmcgYWJzb2x1dGUgcGF0aHNcbmZ1bmN0aW9uIGNvbXBsZXRlVVJMIChwcm9qZWN0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBwcm9qZWN0ID0gJ2ZpbGU6Ly8vJztcbiAgcmV0dXJuIGAke3Byb2plY3R9JHtwYXRofWA7XG59XG5cbi8vIFRoZSBET00gaW1wbGVtZW50YXRpb24gZXhwZWN0cyAobWVzc2FnZT86IHN0cmluZykgPT4gYm9vbGVhblxuKHdpbmRvdy5jb25maXJtIGFzIGFueSkgPSBmdW5jdGlvbiAobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSB7XG4gIHJldHVybiBpbnZva2VTeW5jKCdFTEVDVFJPTl9JTlNQRUNUT1JfQ09ORklSTScsIG1lc3NhZ2UsIHRpdGxlKSBhcyBib29sZWFuO1xufTtcblxuY29uc3QgdXNlRWRpdE1lbnVJdGVtcyA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggPT09IDAgJiYgZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnIHx8XG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaXNDb250ZW50RWRpdGFibGU7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlTWVudSA9IGZ1bmN0aW9uICh4OiBudW1iZXIsIHk6IG51bWJlciwgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdKSB7XG4gIGNvbnN0IGlzRWRpdE1lbnUgPSB1c2VFZGl0TWVudUl0ZW1zKHgsIHksIGl0ZW1zKTtcbiAgaW52b2tlPG51bWJlcj4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9DT05URVhUX01FTlUnLCBpdGVtcywgaXNFZGl0TWVudSkudGhlbihpZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHdpbmRvdy5EZXZUb29sc0FQSSEuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpO1xuICAgIH1cbiAgICB3aW5kb3cuRGV2VG9vbHNBUEkhLmNvbnRleHRNZW51Q2xlYXJlZCgpO1xuICB9KTtcbn07XG5cbmNvbnN0IHNob3dGaWxlQ2hvb3NlckRpYWxvZyA9IGZ1bmN0aW9uIChjYWxsYmFjazogKGJsb2I6IEZpbGUpID0+IHZvaWQpIHtcbiAgaW52b2tlPFsgc3RyaW5nLCBhbnkgXT4oJ0VMRUNUUk9OX0lOU1BFQ1RPUl9TRUxFQ1RfRklMRScpLnRoZW4oKFtwYXRoLCBkYXRhXSkgPT4ge1xuICAgIGlmIChwYXRoICYmIGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGRhdGFUb0h0bWw1RmlsZU9iamVjdChwYXRoLCBkYXRhKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGRhdGFUb0h0bWw1RmlsZU9iamVjdCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICByZXR1cm4gbmV3IEZpbGUoW2RhdGFdLCBwYXRoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZpbGVTZWxlY3RvckVsZW1lbnQgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBmaWxlU2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2sgPSBzaG93RmlsZUNob29zZXJEaWFsb2cuYmluZCh0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiBmaWxlU2VsZWN0b3JFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGlwY1JlbmRlcmVySW50ZXJuYWwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsJztcbmltcG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL2NvbW1vbi9lcnJvci11dGlscyc7XG5cbnR5cGUgSVBDSGFuZGxlciA9IChldmVudDogRWxlY3Ryb24uSXBjUmVuZGVyZXJFdmVudCwgLi4uYXJnczogYW55W10pID0+IGFueVxuXG5leHBvcnQgY29uc3QgaGFuZGxlID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBJUENIYW5kbGVyPiAoY2hhbm5lbDogc3RyaW5nLCBoYW5kbGVyOiBUKSB7XG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oY2hhbm5lbCwgKGV2ZW50LCByZXF1ZXN0SWQsIC4uLmFyZ3MpID0+IHtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoaGFuZGxlcihldmVudCwgLi4uYXJncykpXG4gICAgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICByZXR1cm4gW251bGwsIHJlc3VsdF07XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgcmV0dXJuIFtlcnJvclV0aWxzLnNlcmlhbGl6ZShlcnJvcildO1xuICAgIH0pLnRoZW4ocmVzcG9uc2VBcmdzID0+IHtcbiAgICAgIGV2ZW50LnNlbmRlci5zZW5kKGAke2NoYW5uZWx9X1JFU1BPTlNFXyR7cmVxdWVzdElkfWAsIC4uLnJlc3BvbnNlQXJncyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2U8VD4gKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK25leHRJZDtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uY2UoYCR7Y29tbWFuZH1fUkVTUE9OU0VfJHtyZXF1ZXN0SWR9YCwgKFxuICAgICAgX2V2ZW50LCBlcnJvcjogRWxlY3Ryb24uU2VyaWFsaXplZEVycm9yLCByZXN1bHQ6IGFueVxuICAgICkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvclV0aWxzLmRlc2VyaWFsaXplKGVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kKGNvbW1hbmQsIHJlcXVlc3RJZCwgLi4uYXJncyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlU3luYzxUPiAoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICBjb25zdCBbIGVycm9yLCByZXN1bHQgXSA9IGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoY29tbWFuZCwgbnVsbCwgLi4uYXJncyk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JVdGlscy5kZXNlcmlhbGl6ZShlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiY29uc3QgYmluZGluZyA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCdpcGMnKTtcbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbi8vIENyZWF0ZWQgYnkgaW5pdC5qcy5cbmV4cG9ydCBjb25zdCBpcGNSZW5kZXJlckludGVybmFsOiBFbGVjdHJvbi5JcGNSZW5kZXJlckludGVybmFsID0gdjhVdGlsLmdldEhpZGRlblZhbHVlKGdsb2JhbCwgJ2lwYy1pbnRlcm5hbCcpO1xuY29uc3QgaW50ZXJuYWwgPSB0cnVlO1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmQgPSBmdW5jdGlvbiAoY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZChpbnRlcm5hbCwgY2hhbm5lbCwgYXJncyk7XG59O1xuXG5pcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jID0gZnVuY3Rpb24gKGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRTeW5jKGludGVybmFsLCBjaGFubmVsLCBhcmdzKVswXTtcbn07XG5cbmlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFRvID0gZnVuY3Rpb24gKHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIGJpbmRpbmcuaXBjLnNlbmRUbyhpbnRlcm5hbCwgZmFsc2UsIHdlYkNvbnRlbnRzSWQsIGNoYW5uZWwsIGFyZ3MpO1xufTtcblxuaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kVG9BbGwgPSBmdW5jdGlvbiAod2ViQ29udGVudHNJZCwgY2hhbm5lbCwgLi4uYXJncykge1xuICByZXR1cm4gYmluZGluZy5pcGMuc2VuZFRvKGludGVybmFsLCB0cnVlLCB3ZWJDb250ZW50c0lkLCBjaGFubmVsLCBhcmdzKTtcbn07XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSB9IGZyb20gJ2VsZWN0cm9uJztcbmltcG9ydCB7IGludm9rZSB9IGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG5sZXQgc2hvdWxkTG9nOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHsgcGxhdGZvcm0sIGV4ZWNQYXRoLCBlbnYgfSA9IHByb2Nlc3M7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIGEgc2VjdXJpdHkgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2VkLlxuICogSXQgZG9lcyBzbyBieSBkZXRlcm1pbmluZyB3aGV0aGVyIHdlJ3JlIHJ1bm5pbmcgYXMgRWxlY3Ryb24sXG4gKiB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIGRldmVsb3BlciBpcyBjdXJyZW50bHkgbG9va2luZyBhdCB0aGVcbiAqIGFwcC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBTaG91bGQgd2UgbG9nP1xuICovXG5jb25zdCBzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzID0gZnVuY3Rpb24gKCk6IGJvb2xlYW4ge1xuICBpZiAoc2hvdWxkTG9nICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNob3VsZExvZztcbiAgfVxuXG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdkYXJ3aW4nOlxuICAgICAgc2hvdWxkTG9nID0gZXhlY1BhdGguZW5kc1dpdGgoJ01hY09TL0VsZWN0cm9uJykgfHxcbiAgICAgICAgICAgICAgICAgIGV4ZWNQYXRoLmluY2x1ZGVzKCdFbGVjdHJvbi5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZyZWVic2QnOlxuICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCcvZWxlY3Ryb24nKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgIHNob3VsZExvZyA9IGV4ZWNQYXRoLmVuZHNXaXRoKCdcXFxcZWxlY3Ryb24uZXhlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUykgfHxcbiAgICAgICh3aW5kb3cgJiYgd2luZG93LkVMRUNUUk9OX0RJU0FCTEVfU0VDVVJJVFlfV0FSTklOR1MpKSB7XG4gICAgc2hvdWxkTG9nID0gZmFsc2U7XG4gIH1cblxuICBpZiAoKGVudiAmJiBlbnYuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSB8fFxuICAgICAgKHdpbmRvdyAmJiB3aW5kb3cuRUxFQ1RST05fRU5BQkxFX1NFQ1VSSVRZX1dBUk5JTkdTKSkge1xuICAgIHNob3VsZExvZyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkTG9nO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgd2luZG93IGlzIHJlbW90ZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJcyB0aGlzIGEgcmVtb3RlIHByb3RvY29sP1xuICovXG5jb25zdCBnZXRJc1JlbW90ZVByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpIHtcbiAgICByZXR1cm4gL14oaHR0cHxmdHApcz8vZ2kudGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB3aW5kb3cgaXMgZnJvbSBsb2NhbGhvc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gSXMgY3VycmVudCB3aW5kb3cgZnJvbSBsb2NhbGhvc3Q/XG4gKi9cbmNvbnN0IGlzTG9jYWxob3N0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG59O1xuXG4vKipcbiAqIFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgQ1NQIHdpdGhvdXQgYHVuc2FmZS1ldmFsYCBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IElzIGEgQ1NQIHdpdGggYHVuc2FmZS1ldmFsYCBzZXQ/XG4gKi9cbmNvbnN0IGlzVW5zYWZlRXZhbEVuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3ZWJGcmFtZS5leGVjdXRlSmF2YVNjcmlwdChgKCR7KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbmV3IEZ1bmN0aW9uKCcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXcsbm8tbmV3LWZ1bmNcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pLnRvU3RyaW5nKCl9KSgpYCwgZmFsc2UpO1xufTtcblxuY29uc3QgbW9yZUluZm9ybWF0aW9uID0gYFxcbkZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBoZWxwLCBjb25zdWx0XG5odHRwczovL2VsZWN0cm9uanMub3JnL2RvY3MvdHV0b3JpYWwvc2VjdXJpdHkuXFxuVGhpcyB3YXJuaW5nIHdpbGwgbm90IHNob3cgdXBcbm9uY2UgdGhlIGFwcCBpcyBwYWNrYWdlZC5gO1xuXG4vKipcbiAqICMxIE9ubHkgbG9hZCBzZWN1cmUgY29udGVudFxuICpcbiAqIENoZWNrcyB0aGUgbG9hZGVkIHJlc291cmNlcyBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBsb2dzIGFcbiAqIG1lc3NhZ2UgYWJvdXQgYWxsIHJlc291cmNlcyBsb2FkZWQgb3ZlciBIVFRQIG9yIEZUUC5cbiAqL1xuY29uc3Qgd2FybkFib3V0SW5zZWN1cmVSZXNvdXJjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghd2luZG93IHx8ICF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzID0gd2luZG93LnBlcmZvcm1hbmNlXG4gICAgLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJylcbiAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gL14oaHR0cHxmdHApOi9naS50ZXN0KG5hbWUgfHwgJycpKVxuICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuZXcgVVJMKG5hbWUpLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0JylcbiAgICAubWFwKCh7IG5hbWUgfSkgPT4gYC0gJHtuYW1lfWApXG4gICAgLmpvaW4oJ1xcbicpO1xuXG4gIGlmICghcmVzb3VyY2VzIHx8IHJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBsb2FkcyByZXNvdXJjZXMgdXNpbmcgaW5zZWN1cmVcbiAgcHJvdG9jb2xzLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXG4gIENvbnNpZGVyIGxvYWRpbmcgdGhlIGZvbGxvd2luZyByZXNvdXJjZXMgb3ZlciBIVFRQUyBvciBGVFBTLiBcXG4ke3Jlc291cmNlc31cbiAgXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoSW5zZWN1cmUgUmVzb3VyY2VzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMiBvbiB0aGUgY2hlY2tsaXN0OiBEaXNhYmxlIHRoZSBOb2RlLmpzIGludGVncmF0aW9uIGluIGFsbCByZW5kZXJlcnMgdGhhdFxuICogZGlzcGxheSByZW1vdGUgY29udGVudFxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgTm9kZSBpbnRlZ3JhdGlvbi5cbiAqL1xuY29uc3Qgd2FybkFib3V0Tm9kZVdpdGhSZW1vdGVDb250ZW50ID0gZnVuY3Rpb24gKG5vZGVJbnRlZ3JhdGlvbjogYm9vbGVhbikge1xuICBpZiAoIW5vZGVJbnRlZ3JhdGlvbiB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBOb2RlLmpzIGludGVncmF0aW9uIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgICBjb25zb2xlLndhcm4oJyVjRWxlY3Ryb24gU2VjdXJpdHkgV2FybmluZyAoTm9kZS5qcyBJbnRlZ3JhdGlvbiB3aXRoIFJlbW90ZSBDb250ZW50KScsXG4gICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG4gIH1cbn07XG5cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIGl0IGhhcyByYW1pZmljYXRpb25zIGFuZCBpcyBzdGlsbCBleHBlcmltZW50YWw6XG4vLyAgICMzIEVuYWJsZSBjb250ZXh0IGlzb2xhdGlvbiBpbiBhbGwgcmVuZGVyZXJzIHRoYXQgZGlzcGxheSByZW1vdGUgY29udGVudFxuLy9cbi8vIEN1cnJlbnRseSBtaXNzaW5nIHNpbmNlIHdlIGNhbid0IGVhc2lseSBwcm9ncmFtbWF0aWNhbGx5IGNoZWNrIGZvciB0aG9zZSBjYXNlczpcbi8vICAgIzQgVXNlIHNlcy5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoKSBpbiBhbGwgc2Vzc2lvbnMgdGhhdCBsb2FkIHJlbW90ZSBjb250ZW50XG5cbi8qKlxuICogIzUgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IGRpc2FibGUgd2Vic2VjdXJpdHlcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGRpc2FibGVkIHdlYlNlY3VyaXR5LlxuICovXG5jb25zdCB3YXJuQWJvdXREaXNhYmxlZFdlYlNlY3VyaXR5ID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCB3ZWJQcmVmZXJlbmNlcy53ZWJTZWN1cml0eSAhPT0gZmFsc2UpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJ3ZWJTZWN1cml0eVwiIGRpc2FibGVkLiBUaGlzXG4gIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKERpc2FibGVkIHdlYlNlY3VyaXR5KScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjNiBvbiB0aGUgY2hlY2tsaXN0OiBEZWZpbmUgYSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhbmQgdXNlIHJlc3RyaWN0aXZlXG4gKiBydWxlcyAoaS5lLiBzY3JpcHQtc3JjICdzZWxmJylcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHVuc2V0IG9yIGluc2VjdXJlIENTUFxuICovXG5jb25zdCB3YXJuQWJvdXRJbnNlY3VyZUNTUCA9IGZ1bmN0aW9uICgpIHtcbiAgaXNVbnNhZmVFdmFsRW5hYmxlZCgpLnRoZW4oKGVuYWJsZWQpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBlaXRoZXIgbm8gQ29udGVudCBTZWN1cml0eVxuICAgIFBvbGljeSBzZXQgb3IgYSBwb2xpY3kgd2l0aCBcInVuc2FmZS1ldmFsXCIgZW5hYmxlZC4gVGhpcyBleHBvc2VzIHVzZXJzIG9mXG4gICAgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChJbnNlY3VyZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9KTtcbn07XG5cbi8qKlxuICogIzcgb24gdGhlIGNoZWNrbGlzdDogRG8gbm90IHNldCBhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQgdG8gdHJ1ZVxuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgZGlzYWJsZWQgd2ViU2VjdXJpdHkuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQgPSBmdW5jdGlvbiAod2ViUHJlZmVyZW5jZXM/OiBFbGVjdHJvbi5XZWJQcmVmZXJlbmNlcykge1xuICBpZiAoIXdlYlByZWZlcmVuY2VzIHx8ICF3ZWJQcmVmZXJlbmNlcy5hbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpIHJldHVybjtcblxuICBjb25zdCB3YXJuaW5nID0gYFRoaXMgcmVuZGVyZXIgcHJvY2VzcyBoYXMgXCJhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnRcIlxuICBlbmFibGVkLiBUaGlzIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gc2V2ZXJlIHNlY3VyaXR5IHJpc2tzLlxcblxuICAke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQpJyxcbiAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7Jywgd2FybmluZyk7XG59O1xuXG4vKipcbiAqICM4IG9uIHRoZSBjaGVja2xpc3Q6IERvIG5vdCBlbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzXG4gKlxuICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCBleHBlcmltZW50YWwgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHdhcm5BYm91dEV4cGVyaW1lbnRhbEZlYXR1cmVzID0gZnVuY3Rpb24gKHdlYlByZWZlcmVuY2VzPzogRWxlY3Ryb24uV2ViUHJlZmVyZW5jZXMpIHtcbiAgaWYgKCF3ZWJQcmVmZXJlbmNlcyB8fCAoIXdlYlByZWZlcmVuY2VzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImV4cGVyaW1lbnRhbEZlYXR1cmVzXCIgZW5hYmxlZC5cbiAgVGhpcyBleHBvc2VzIHVzZXJzIG9mIHRoaXMgYXBwIHRvIHNvbWUgc2VjdXJpdHkgcmlzay4gSWYgeW91IGRvIG5vdCBuZWVkXG4gIHRoaXMgZmVhdHVyZSwgeW91IHNob3VsZCBkaXNhYmxlIGl0LlxcbiR7bW9yZUluZm9ybWF0aW9ufWA7XG5cbiAgY29uc29sZS53YXJuKCclY0VsZWN0cm9uIFNlY3VyaXR5IFdhcm5pbmcgKGV4cGVyaW1lbnRhbEZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjOSBvbiB0aGUgY2hlY2tsaXN0OiBEbyBub3QgdXNlIGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqXG4gKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IGVuYWJsZUJsaW5rRmVhdHVyZXNcbiAqL1xuY29uc3Qgd2FybkFib3V0RW5hYmxlQmxpbmtGZWF0dXJlcyA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHxcbiAgICAhd2ViUHJlZmVyZW5jZXMuaGFzT3duUHJvcGVydHkoJ2VuYWJsZUJsaW5rRmVhdHVyZXMnKSB8fFxuICAgICh3ZWJQcmVmZXJlbmNlcy5lbmFibGVCbGlua0ZlYXR1cmVzICYmIHdlYlByZWZlcmVuY2VzLmVuYWJsZUJsaW5rRmVhdHVyZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBhZGRpdGlvbmFsIFwiZW5hYmxlQmxpbmtGZWF0dXJlc1wiXG4gIGVuYWJsZWQuIFRoaXMgZXhwb3NlcyB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2suIElmIHlvdSBkbyBub3RcbiAgbmVlZCB0aGlzIGZlYXR1cmUsIHlvdSBzaG91bGQgZGlzYWJsZSBpdC5cXG4ke21vcmVJbmZvcm1hdGlvbn1gO1xuXG4gIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVCbGlua0ZlYXR1cmVzKScsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xufTtcblxuLyoqXG4gKiAjMTAgb24gdGhlIGNoZWNrbGlzdDogRG8gTm90IFVzZSBhbGxvd3BvcHVwc1xuICpcbiAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQgYWxsb3dlZCBwb3B1cHNcbiAqL1xuY29uc3Qgd2FybkFib3V0QWxsb3dlZFBvcHVwcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICBjb25zdCBkb21FbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thbGxvd3BvcHVwc10nKTtcblxuICAgIGlmICghZG9tRWxlbWVudHMgfHwgZG9tRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2FybmluZyA9IGBBIDx3ZWJ2aWV3PiBoYXMgXCJhbGxvd3BvcHVwc1wiIHNldCB0byB0cnVlLiBUaGlzIGV4cG9zZXNcbiAgICB1c2VycyBvZiB0aGlzIGFwcCB0byBzb21lIHNlY3VyaXR5IHJpc2ssIHNpbmNlIHBvcHVwcyBhcmUganVzdFxuICAgIEJyb3dzZXJXaW5kb3dzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcyBmZWF0dXJlLCB5b3Ugc2hvdWxkIGRpc2FibGUgaXQuXFxuXG4gICAgJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChhbGxvd3BvcHVwcyknLFxuICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsIHdhcm5pbmcpO1xuICB9XG59O1xuXG4vLyBDdXJyZW50bHkgbWlzc2luZyBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkgcHJvZ3JhbW1hdGljYWxseSBjaGVjayBmb3IgaXQ6XG4vLyAgICMxMSBWZXJpZnkgV2ViVmlldyBPcHRpb25zIEJlZm9yZSBDcmVhdGlvblxuLy8gICAjMTIgRGlzYWJsZSBvciBsaW1pdCBuYXZpZ2F0aW9uXG4vLyAgICMxMyBEaXNhYmxlIG9yIGxpbWl0IGNyZWF0aW9uIG9mIG5ldyB3aW5kb3dzXG4vLyAgICMxNCBEbyBub3QgdXNlIGBvcGVuRXh0ZXJuYWxgIHdpdGggdW50cnVzdGVkIGNvbnRlbnRcblxuLy8gIzE1IG9uIHRoZSBjaGVja2xpc3Q6IERpc2FibGUgdGhlIGByZW1vdGVgIG1vZHVsZVxuLy8gTG9ncyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCB0aGUgcmVtb3RlIG1vZHVsZVxuXG5jb25zdCB3YXJuQWJvdXRSZW1vdGVNb2R1bGVXaXRoUmVtb3RlQ29udGVudCA9IGZ1bmN0aW9uICh3ZWJQcmVmZXJlbmNlcz86IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzKSB7XG4gIGlmICghd2ViUHJlZmVyZW5jZXMgfHwgIXdlYlByZWZlcmVuY2VzLmVuYWJsZVJlbW90ZU1vZHVsZSB8fCBpc0xvY2FsaG9zdCgpKSByZXR1cm47XG5cbiAgaWYgKGdldElzUmVtb3RlUHJvdG9jb2woKSkge1xuICAgIGNvbnN0IHdhcm5pbmcgPSBgVGhpcyByZW5kZXJlciBwcm9jZXNzIGhhcyBcImVuYWJsZVJlbW90ZU1vZHVsZVwiIGVuYWJsZWRcbiAgICBhbmQgYXR0ZW1wdGVkIHRvIGxvYWQgcmVtb3RlIGNvbnRlbnQgZnJvbSAnJHt3aW5kb3cubG9jYXRpb259Jy4gVGhpc1xuICAgIGV4cG9zZXMgdXNlcnMgb2YgdGhpcyBhcHAgdG8gdW5uZWNlc3Nhcnkgc2VjdXJpdHkgcmlza3MuXFxuJHttb3JlSW5mb3JtYXRpb259YDtcblxuICAgIGNvbnNvbGUud2FybignJWNFbGVjdHJvbiBTZWN1cml0eSBXYXJuaW5nIChlbmFibGVSZW1vdGVNb2R1bGUpJyxcbiAgICAgICdmb250LXdlaWdodDogYm9sZDsnLCB3YXJuaW5nKTtcbiAgfVxufTtcblxuLy8gQ3VycmVudGx5IG1pc3Npbmcgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHByb2dyYW1tYXRpY2FsbHkgY2hlY2sgZm9yIGl0OlxuLy8gICAjMTYgRmlsdGVyIHRoZSBgcmVtb3RlYCBtb2R1bGVcblxuY29uc3QgbG9nU2VjdXJpdHlXYXJuaW5ncyA9IGZ1bmN0aW9uIChcbiAgd2ViUHJlZmVyZW5jZXM6IEVsZWN0cm9uLldlYlByZWZlcmVuY2VzIHwgdW5kZWZpbmVkLCBub2RlSW50ZWdyYXRpb246IGJvb2xlYW5cbikge1xuICB3YXJuQWJvdXROb2RlV2l0aFJlbW90ZUNvbnRlbnQobm9kZUludGVncmF0aW9uKTtcbiAgd2FybkFib3V0RGlzYWJsZWRXZWJTZWN1cml0eSh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEluc2VjdXJlUmVzb3VyY2VzKCk7XG4gIHdhcm5BYm91dEluc2VjdXJlQ29udGVudEFsbG93ZWQod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRFeHBlcmltZW50YWxGZWF0dXJlcyh3ZWJQcmVmZXJlbmNlcyk7XG4gIHdhcm5BYm91dEVuYWJsZUJsaW5rRmVhdHVyZXMod2ViUHJlZmVyZW5jZXMpO1xuICB3YXJuQWJvdXRJbnNlY3VyZUNTUCgpO1xuICB3YXJuQWJvdXRBbGxvd2VkUG9wdXBzKCk7XG4gIHdhcm5BYm91dFJlbW90ZU1vZHVsZVdpdGhSZW1vdGVDb250ZW50KHdlYlByZWZlcmVuY2VzKTtcbn07XG5cbmNvbnN0IGdldFdlYlByZWZlcmVuY2VzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBpbnZva2U8RWxlY3Ryb24uV2ViUHJlZmVyZW5jZXM+KCdFTEVDVFJPTl9CUk9XU0VSX0dFVF9MQVNUX1dFQl9QUkVGRVJFTkNFUycpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihgZ2V0TGFzdFdlYlByZWZlcmVuY2VzKCkgZmFpbGVkOiAke2Vycm9yfWApO1xuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlXYXJuaW5ncyAobm9kZUludGVncmF0aW9uOiBib29sZWFuKSB7XG4gIGNvbnN0IGxvYWRIYW5kbGVyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChzaG91bGRMb2dTZWN1cml0eVdhcm5pbmdzKCkpIHtcbiAgICAgIGNvbnN0IHdlYlByZWZlcmVuY2VzID0gYXdhaXQgZ2V0V2ViUHJlZmVyZW5jZXMoKTtcbiAgICAgIGxvZ1NlY3VyaXR5V2FybmluZ3Mod2ViUHJlZmVyZW5jZXMsIG5vZGVJbnRlZ3JhdGlvbik7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRIYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG59XG4iLCJpbXBvcnQgeyB3ZWJGcmFtZSwgV2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBBbGwga2V5cyBvZiBXZWJGcmFtZSB0aGF0IGV4dGVuZCBGdW5jdGlvblxudHlwZSBXZWJGcmFtZU1ldGhvZCA9IHtcbiAgW0sgaW4ga2V5b2YgV2ViRnJhbWVdOlxuICAgIFdlYkZyYW1lW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBLIDogbmV2ZXJcbn1cblxuZXhwb3J0IGNvbnN0IHdlYkZyYW1lSW5pdCA9ICgpID0+IHtcbiAgLy8gQ2FsbCB3ZWJGcmFtZSBtZXRob2RcbiAgaXBjUmVuZGVyZXJVdGlscy5oYW5kbGUoJ0VMRUNUUk9OX0lOVEVSTkFMX1JFTkRFUkVSX1dFQl9GUkFNRV9NRVRIT0QnLCAoXG4gICAgZXZlbnQsIG1ldGhvZDoga2V5b2YgV2ViRnJhbWVNZXRob2QsIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4ge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhlIHNoZWVyIG51bWJlciBvZlxuICAgIC8vIGNhbGwgc2lnbmF0dXJlcyBoZXJlIGFuZCBzaW1wbHkgZ2l2ZXMgdXAuIEluY29ycmVjdCBpbnZvY2F0aW9uc1xuICAgIC8vIHdpbGwgYmUgY2F1Z2h0IGJ5IFwia2V5b2YgV2ViRnJhbWVNZXRob2RcIiB0aG91Z2guXG4gICAgcmV0dXJuICh3ZWJGcmFtZVttZXRob2RdIGFzIGFueSkoLi4uYXJncyk7XG4gIH0pO1xufTtcbiIsImltcG9ydCB7IHdlYkZyYW1lLCBJcGNNZXNzYWdlRXZlbnQgfSBmcm9tICdlbGVjdHJvbic7XG5pbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbnZva2UsIGludm9rZVN5bmMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcblxuaW1wb3J0IHsgV2ViVmlld0ltcGwgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbmNvbnN0IFdFQl9WSUVXX0VWRU5UUzogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj4gPSB7XG4gICdsb2FkLWNvbW1pdCc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJ10sXG4gICdkaWQtYXR0YWNoJzogW10sXG4gICdkaWQtZmluaXNoLWxvYWQnOiBbXSxcbiAgJ2RpZC1mYWlsLWxvYWQnOiBbJ2Vycm9yQ29kZScsICdlcnJvckRlc2NyaXB0aW9uJywgJ3ZhbGlkYXRlZFVSTCcsICdpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLWZyYW1lLWZpbmlzaC1sb2FkJzogWydpc01haW5GcmFtZScsICdmcmFtZVByb2Nlc3NJZCcsICdmcmFtZVJvdXRpbmdJZCddLFxuICAnZGlkLXN0YXJ0LWxvYWRpbmcnOiBbXSxcbiAgJ2RpZC1zdG9wLWxvYWRpbmcnOiBbXSxcbiAgJ2RvbS1yZWFkeSc6IFtdLFxuICAnY29uc29sZS1tZXNzYWdlJzogWydsZXZlbCcsICdtZXNzYWdlJywgJ2xpbmUnLCAnc291cmNlSWQnXSxcbiAgJ2NvbnRleHQtbWVudSc6IFsncGFyYW1zJ10sXG4gICdkZXZ0b29scy1vcGVuZWQnOiBbXSxcbiAgJ2RldnRvb2xzLWNsb3NlZCc6IFtdLFxuICAnZGV2dG9vbHMtZm9jdXNlZCc6IFtdLFxuICAnbmV3LXdpbmRvdyc6IFsndXJsJywgJ2ZyYW1lTmFtZScsICdkaXNwb3NpdGlvbicsICdvcHRpb25zJ10sXG4gICd3aWxsLW5hdmlnYXRlJzogWyd1cmwnXSxcbiAgJ2RpZC1zdGFydC1uYXZpZ2F0aW9uJzogWyd1cmwnLCAnaXNJblBsYWNlJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0J10sXG4gICdkaWQtZnJhbWUtbmF2aWdhdGUnOiBbJ3VybCcsICdodHRwUmVzcG9uc2VDb2RlJywgJ2h0dHBTdGF0dXNUZXh0JywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdkaWQtbmF2aWdhdGUtaW4tcGFnZSc6IFsndXJsJywgJ2lzTWFpbkZyYW1lJywgJ2ZyYW1lUHJvY2Vzc0lkJywgJ2ZyYW1lUm91dGluZ0lkJ10sXG4gICdmb2N1cy1jaGFuZ2UnOiBbJ2ZvY3VzJywgJ2d1ZXN0SW5zdGFuY2VJZCddLFxuICAnY2xvc2UnOiBbXSxcbiAgJ2NyYXNoZWQnOiBbXSxcbiAgJ3BsdWdpbi1jcmFzaGVkJzogWyduYW1lJywgJ3ZlcnNpb24nXSxcbiAgJ2Rlc3Ryb3llZCc6IFtdLFxuICAncGFnZS10aXRsZS11cGRhdGVkJzogWyd0aXRsZScsICdleHBsaWNpdFNldCddLFxuICAncGFnZS1mYXZpY29uLXVwZGF0ZWQnOiBbJ2Zhdmljb25zJ10sXG4gICdlbnRlci1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdsZWF2ZS1odG1sLWZ1bGwtc2NyZWVuJzogW10sXG4gICdtZWRpYS1zdGFydGVkLXBsYXlpbmcnOiBbXSxcbiAgJ21lZGlhLXBhdXNlZCc6IFtdLFxuICAnZm91bmQtaW4tcGFnZSc6IFsncmVzdWx0J10sXG4gICdkaWQtY2hhbmdlLXRoZW1lLWNvbG9yJzogWyd0aGVtZUNvbG9yJ10sXG4gICd1cGRhdGUtdGFyZ2V0LXVybCc6IFsndXJsJ11cbn07XG5cbmNvbnN0IERFUFJFQ0FURURfRVZFTlRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAncGFnZS10aXRsZS11cGRhdGVkJzogJ3BhZ2UtdGl0bGUtc2V0J1xufTtcblxuY29uc3QgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChcbiAgd2ViVmlldzogV2ViVmlld0ltcGwsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEtleTogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTxhbnk+XG4pIHtcbiAgaWYgKERFUFJFQ0FURURfRVZFTlRTW2V2ZW50TmFtZV0gIT0gbnVsbCkge1xuICAgIGRpc3BhdGNoRXZlbnQod2ViVmlldywgREVQUkVDQVRFRF9FVkVOVFNbZXZlbnROYW1lXSwgZXZlbnRLZXksIC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgZG9tRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKSBhcyBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudDtcbiAgV0VCX1ZJRVdfRVZFTlRTW2V2ZW50S2V5XS5mb3JFYWNoKChwcm9wLCBpbmRleCkgPT4ge1xuICAgIChkb21FdmVudCBhcyBhbnkpW3Byb3BdID0gYXJnc1tpbmRleF07XG4gIH0pO1xuXG4gIHdlYlZpZXcuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQtY29tbWl0Jykge1xuICAgIHdlYlZpZXcub25Mb2FkQ29tbWl0KGRvbUV2ZW50KTtcbiAgfSBlbHNlIGlmIChldmVudE5hbWUgPT09ICdmb2N1cy1jaGFuZ2UnKSB7XG4gICAgd2ViVmlldy5vbkZvY3VzQ2hhbmdlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50cyAod2ViVmlldzogV2ViVmlld0ltcGwsIHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ERVNUUk9ZX0dVRVNULSR7dmlld0luc3RhbmNlSWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIHdlYlZpZXcuZ3Vlc3RJbnN0YW5jZUlkID0gdW5kZWZpbmVkO1xuICAgIHdlYlZpZXcucmVzZXQoKTtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnZGVzdHJveWVkJyk7XG4gICAgd2ViVmlldy5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTtcbiAgfSk7XG5cbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbihgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWAsIGZ1bmN0aW9uIChldmVudCwgZXZlbnROYW1lLCAuLi5hcmdzKSB7XG4gICAgZGlzcGF0Y2hFdmVudCh3ZWJWaWV3LCBldmVudE5hbWUsIGV2ZW50TmFtZSwgLi4uYXJncyk7XG4gIH0pO1xuXG4gIGlwY1JlbmRlcmVySW50ZXJuYWwub24oYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfSVBDX01FU1NBR0UtJHt2aWV3SW5zdGFuY2VJZH1gLCBmdW5jdGlvbiAoZXZlbnQsIGNoYW5uZWwsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBkb21FdmVudCA9IG5ldyBFdmVudCgnaXBjLW1lc3NhZ2UnKSBhcyBJcGNNZXNzYWdlRXZlbnQ7XG4gICAgZG9tRXZlbnQuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgZG9tRXZlbnQuYXJncyA9IGFyZ3M7XG5cbiAgICB3ZWJWaWV3LmRpc3BhdGNoRXZlbnQoZG9tRXZlbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMgKHZpZXdJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgaXBjUmVuZGVyZXJJbnRlcm5hbC5yZW1vdmVBbGxMaXN0ZW5lcnMoYEVMRUNUUk9OX0dVRVNUX1ZJRVdfSU5URVJOQUxfREVTVFJPWV9HVUVTVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9ESVNQQVRDSF9FVkVOVC0ke3ZpZXdJbnN0YW5jZUlkfWApO1xuICBpcGNSZW5kZXJlckludGVybmFsLnJlbW92ZUFsbExpc3RlbmVycyhgRUxFQ1RST05fR1VFU1RfVklFV19JTlRFUk5BTF9JUENfTUVTU0FHRS0ke3ZpZXdJbnN0YW5jZUlkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3QgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBpbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DUkVBVEVfR1VFU1QnLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3Vlc3RTeW5jIChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICByZXR1cm4gaW52b2tlU3luYygnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NSRUFURV9HVUVTVCcsIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hHdWVzdCAoXG4gIGVsZW1lbnRJbnN0YW5jZUlkOiBudW1iZXIsIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNvbnRlbnRXaW5kb3c6IFdpbmRvd1xuKSB7XG4gIGNvbnN0IGVtYmVkZGVyRnJhbWVJZCA9ICh3ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWwpLmdldFdlYkZyYW1lSWQoY29udGVudFdpbmRvdyk7XG4gIGlmIChlbWJlZGRlckZyYW1lSWQgPCAwKSB7IC8vIHRoaXMgZXJyb3Igc2hvdWxkIG5vdCBoYXBwZW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVtYmVkZGVyIGZyYW1lJyk7XG4gIH1cbiAgaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQVRUQUNIX0dVRVNUJywgZW1iZWRkZXJGcmFtZUlkLCBlbGVtZW50SW5zdGFuY2VJZCwgZ3Vlc3RJbnN0YW5jZUlkLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgY29uc3QgZ3Vlc3RWaWV3SW50ZXJuYWxNb2R1bGUgPSB7XG4gIGRlcmVnaXN0ZXJFdmVudHMsXG4gIGNyZWF0ZUd1ZXN0LFxuICBjcmVhdGVHdWVzdFN5bmMsXG4gIGF0dGFjaEd1ZXN0XG59O1xuIiwiaW1wb3J0ICogYXMgaXBjUmVuZGVyZXJVdGlscyBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvaXBjLXJlbmRlcmVyLWludGVybmFsLXV0aWxzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnO1xuaW1wb3J0IHsgV0VCX1ZJRVdfQ09OU1RBTlRTIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWNvbnN0YW50cyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXNvbHZlIHVybCBzZXQgaW4gYXR0cmlidXRlLlxuY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuY29uc3QgcmVzb2x2ZVVSTCA9IGZ1bmN0aW9uICh1cmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdXJsKSByZXR1cm4gJyc7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn07XG5cbmludGVyZmFjZSBNdXRhdGlvbkhhbmRsZXIge1xuICBoYW5kbGVNdXRhdGlvbiAoX29sZFZhbHVlOiBhbnksIF9uZXdWYWx1ZTogYW55KTogYW55O1xufVxuXG4vLyBBdHRyaWJ1dGUgb2JqZWN0cy5cbi8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYSBXZWJWaWV3IGF0dHJpYnV0ZS5cbmNsYXNzIFdlYlZpZXdBdHRyaWJ1dGUgaW1wbGVtZW50cyBNdXRhdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIGlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSAod2ViVmlld0ltcGwud2Vidmlld05vZGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gfHwgJyc7XG4gICAgdGhpcy53ZWJWaWV3SW1wbCA9IHdlYlZpZXdJbXBsO1xuICAgIHRoaXMuZGVmaW5lUHJvcGVydHkoKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlcyBhbmQgcmV0dXJucyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuZ2V0QXR0cmlidXRlKHRoaXMubmFtZSkgfHwgdGhpcy52YWx1ZTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICBwdWJsaWMgc2V0VmFsdWUgKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLnNldEF0dHJpYnV0ZSh0aGlzLm5hbWUsIHZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIENoYW5nZXMgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBpdHMgbXV0YXRpb24gaGFuZGxlci5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmlnbm9yZU11dGF0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvLyBEZWZpbmVzIHRoaXMgYXR0cmlidXRlIGFzIGEgcHJvcGVydHkgb24gdGhlIHdlYnZpZXcgbm9kZS5cbiAgcHVibGljIGRlZmluZVByb3BlcnR5ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUsIHRoaXMubmFtZSwge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBjaGFuZ2VzLlxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb246IE11dGF0aW9uSGFuZGxlclsnaGFuZGxlTXV0YXRpb24nXSA9ICgpID0+IHVuZGVmaW5lZCBhcyBhbnlcbn1cblxuLy8gQW4gYXR0cmlidXRlIHRoYXQgaXMgdHJlYXRlZCBhcyBhIEJvb2xlYW4uXG5jbGFzcyBCb29sZWFuQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5oYXNBdHRyaWJ1dGUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlICh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUucmVtb3ZlQXR0cmlidXRlKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIHRoZSBzdG9yYWdlIHBhcnRpdGlvbi5cbmNsYXNzIFBhcnRpdGlvbkF0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBwdWJsaWMgdmFsaWRQYXJ0aXRpb25JZCA9IHRydWVcblxuICBjb25zdHJ1Y3RvciAocHVibGljIHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OLCB3ZWJWaWV3SW1wbCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTXV0YXRpb24gPSAob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgfHwgJyc7XG5cbiAgICAvLyBUaGUgcGFydGl0aW9uIGNhbm5vdCBjaGFuZ2UgaWYgdGhlIHdlYnZpZXcgaGFzIGFscmVhZHkgbmF2aWdhdGVkLlxuICAgIGlmICghdGhpcy53ZWJWaWV3SW1wbC5iZWZvcmVGaXJzdE5hdmlnYXRpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoV0VCX1ZJRVdfQ09OU1RBTlRTLkVSUk9SX01TR19BTFJFQURZX05BVklHQVRFRCk7XG4gICAgICB0aGlzLnNldFZhbHVlSWdub3JlTXV0YXRpb24ob2xkVmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICdwZXJzaXN0OicpIHtcbiAgICAgIHRoaXMudmFsaWRQYXJ0aXRpb25JZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5lcnJvcihXRUJfVklFV19DT05TVEFOVFMuRVJST1JfTVNHX0lOVkFMSURfUEFSVElUSU9OX0FUVFJJQlVURSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IGhhbmRsZXMgdGhlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIG9mIHRoZSB3ZWJ2aWV3LlxuY2xhc3MgU3JjQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIHB1YmxpYyBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQywgd2ViVmlld0ltcGwpO1xuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgKCkge1xuICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmhhc0F0dHJpYnV0ZSh0aGlzLm5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlSWdub3JlTXV0YXRpb24gKHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlci5zZXRWYWx1ZUlnbm9yZU11dGF0aW9uKHZhbHVlKTtcblxuICAgIC8vIHRha2VSZWNvcmRzKCkgaXMgbmVlZGVkIHRvIGNsZWFyIHF1ZXVlZCB1cCBzcmMgbXV0YXRpb25zLiBXaXRob3V0IGl0LCBpdFxuICAgIC8vIGlzIHBvc3NpYmxlIGZvciB0aGlzIGNoYW5nZSB0byBnZXQgcGlja2VkIHVwIGFzeW5jcm9ub3VzbHkgYnkgc3JjJ3NcbiAgICAvLyBtdXRhdGlvbiBvYnNlcnZlciB8b2JzZXJ2ZXJ8LCBhbmQgdGhlbiBnZXQgaGFuZGxlZCBldmVuIHRob3VnaCB3ZSBkbyBub3RcbiAgICAvLyB3YW50IHRvIGhhbmRsZSB0aGlzIG11dGF0aW9uLlxuICAgIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNdXRhdGlvbiA9IChvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgLy8gT25jZSB3ZSBoYXZlIG5hdmlnYXRlZCwgd2UgZG9uJ3QgYWxsb3cgY2xlYXJpbmcgdGhlIHNyYyBhdHRyaWJ1dGUuXG4gICAgLy8gT25jZSA8d2Vidmlldz4gZW50ZXJzIGEgbmF2aWdhdGVkIHN0YXRlLCBpdCBjYW5ub3QgcmV0dXJuIHRvIGFcbiAgICAvLyBwbGFjZWhvbGRlciBzdGF0ZS5cbiAgICBpZiAoIW5ld1ZhbHVlICYmIG9sZFZhbHVlKSB7XG4gICAgICAvLyBzcmMgYXR0cmlidXRlIGNoYW5nZXMgbm9ybWFsbHkgaW5pdGlhdGUgYSBuYXZpZ2F0aW9uLiBXZSBzdXBwcmVzc1xuICAgICAgLy8gdGhlIG5leHQgc3JjIGF0dHJpYnV0ZSBoYW5kbGVyIGNhbGwgdG8gYXZvaWQgcmVsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAvLyBvbiBldmVyeSBndWVzdC1pbml0aWF0ZWQgbmF2aWdhdGlvbi5cbiAgICAgIHRoaXMuc2V0VmFsdWVJZ25vcmVNdXRhdGlvbihvbGRWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyc2UoKTtcbiAgfVxuXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgbXV0YXRpb24gb2JzZXJ2ZXIgaXMgdG8gY2F0Y2ggYXNzaWdubWVudCB0byB0aGUgc3JjXG4gIC8vIGF0dHJpYnV0ZSB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIGl0cyB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGNhc2VcbiAgLy8gd2hlcmUgdGhlIHdlYnZpZXcgZ3Vlc3QgaGFzIGNyYXNoZWQgYW5kIG5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgYWRkcmVzc1xuICAvLyBzcGF3bnMgb2ZmIGEgbmV3IHByb2Nlc3MuXG4gIHB1YmxpYyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIgKCkge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9sZFZhbHVlIH0gPSBtdXRhdGlvbjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVNdXRhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbdGhpcy5uYW1lXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZSwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZSAoKSB7XG4gICAgaWYgKCF0aGlzLndlYlZpZXdJbXBsLmVsZW1lbnRBdHRhY2hlZCB8fCAhdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUEFSVElUSU9OXS52YWxpZFBhcnRpdGlvbklkIHx8ICF0aGlzLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLndlYlZpZXdJbXBsLmNyZWF0ZUd1ZXN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTmF2aWdhdGUgdG8gfHRoaXMuc3JjfC5cbiAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBjb25zdCBodHRwcmVmZXJyZXIgPSB0aGlzLndlYlZpZXdJbXBsLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9IVFRQUkVGRVJSRVJdLmdldFZhbHVlKCk7XG4gICAgaWYgKGh0dHByZWZlcnJlcikge1xuICAgICAgb3B0cy5odHRwUmVmZXJyZXIgPSBodHRwcmVmZXJyZXI7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcmFnZW50ID0gdGhpcy53ZWJWaWV3SW1wbC5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfVVNFUkFHRU5UXS5nZXRWYWx1ZSgpO1xuICAgIGlmICh1c2VyYWdlbnQpIHtcbiAgICAgIG9wdHMudXNlckFnZW50ID0gdXNlcmFnZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGd1ZXN0SW5zdGFuY2VJZCA9IHRoaXMud2ViVmlld0ltcGwuZ3Vlc3RJbnN0YW5jZUlkO1xuICAgIGNvbnN0IG1ldGhvZCA9ICdsb2FkVVJMJztcbiAgICBjb25zdCBhcmdzID0gW3RoaXMuZ2V0VmFsdWUoKSwgb3B0c107XG5cbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0NBTEwnLCBndWVzdEluc3RhbmNlSWQsIG1ldGhvZCwgYXJncyk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHNwZWNpZmllcyBIVFRQIHJlZmVycmVyLlxuY2xhc3MgSHR0cFJlZmVycmVyQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUiwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSBzcGVjaWZpZXMgdXNlciBhZ2VudFxuY2xhc3MgVXNlckFnZW50QXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCwgd2ViVmlld0ltcGwpO1xuICB9XG59XG5cbi8vIEF0dHJpYnV0ZSB0aGF0IHNldCBwcmVsb2FkIHNjcmlwdC5cbmNsYXNzIFByZWxvYWRBdHRyaWJ1dGUgZXh0ZW5kcyBXZWJWaWV3QXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IgKHdlYlZpZXdJbXBsOiBXZWJWaWV3SW1wbCkge1xuICAgIHN1cGVyKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUFJFTE9BRCwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICBpZiAoIXRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuaGFzQXR0cmlidXRlKHRoaXMubmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmVsb2FkID0gcmVzb2x2ZVVSTCh0aGlzLndlYlZpZXdJbXBsLndlYnZpZXdOb2RlLmdldEF0dHJpYnV0ZSh0aGlzLm5hbWUpKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IHByZWxvYWQuc3Vic3RyKDAsIDUpO1xuXG4gICAgaWYgKHByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFdFQl9WSUVXX0NPTlNUQU5UUy5FUlJPUl9NU0dfSU5WQUxJRF9QUkVMT0FEX0FUVFJJQlVURSk7XG4gICAgICBwcmVsb2FkID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWxvYWQ7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBlbmFibGVkLlxuY2xhc3MgQmxpbmtGZWF0dXJlc0F0dHJpYnV0ZSBleHRlbmRzIFdlYlZpZXdBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvciAod2ViVmlld0ltcGw6IFdlYlZpZXdJbXBsKSB7XG4gICAgc3VwZXIoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSBibGluayBmZWF0dXJlcyB0byBiZSBkaXNhYmxlZC5cbmNsYXNzIERpc2FibGVCbGlua0ZlYXR1cmVzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0RJU0FCTEVCTElOS0ZFQVRVUkVTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuLy8gQXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSB3ZWIgcHJlZmVyZW5jZXMgdG8gYmUgZW5hYmxlZC5cbmNsYXNzIFdlYlByZWZlcmVuY2VzQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTLCB3ZWJWaWV3SW1wbCk7XG4gIH1cbn1cblxuY2xhc3MgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlIGV4dGVuZHMgV2ViVmlld0F0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yICh3ZWJWaWV3SW1wbDogV2ViVmlld0ltcGwpIHtcbiAgICBzdXBlcihXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRSwgd2ViVmlld0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlICgpIHtcbiAgICByZXR1cm4gdGhpcy53ZWJWaWV3SW1wbC53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKSAhPT0gJ2ZhbHNlJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSAodmFsdWU6IGFueSkge1xuICAgIHRoaXMud2ViVmlld0ltcGwud2Vidmlld05vZGUuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgfVxufVxuXG4vLyBTZXRzIHVwIGFsbCBvZiB0aGUgd2VidmlldyBhdHRyaWJ1dGVzLlxuV2ViVmlld0ltcGwucHJvdG90eXBlLnNldHVwV2ViVmlld0F0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dID0gbmV3IFBhcnRpdGlvbkF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfU1JDXSA9IG5ldyBTcmNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0hUVFBSRUZFUlJFUl0gPSBuZXcgSHR0cFJlZmVycmVyQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9VU0VSQUdFTlRdID0gbmV3IFVzZXJBZ2VudEF0dHJpYnV0ZSh0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT05JTlNVQkZSQU1FUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BMVUdJTlNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QTFVHSU5TLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZXSA9IG5ldyBCb29sZWFuQXR0cmlidXRlKFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRElTQUJMRVdFQlNFQ1VSSVRZLCB0aGlzKTtcbiAgdGhpcy5hdHRyaWJ1dGVzW1dFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFNdID0gbmV3IEJvb2xlYW5BdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9BTExPV1BPUFVQUywgdGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX0VOQUJMRVJFTU9URU1PRFVMRV0gPSBuZXcgRW5hYmxlUmVtb3RlTW9kdWxlQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QUkVMT0FEXSA9IG5ldyBQcmVsb2FkQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9CTElOS0ZFQVRVUkVTXSA9IG5ldyBCbGlua0ZlYXR1cmVzQXR0cmlidXRlKHRoaXMpO1xuICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFU10gPSBuZXcgRGlzYWJsZUJsaW5rRmVhdHVyZXNBdHRyaWJ1dGUodGhpcyk7XG4gIHRoaXMuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1dFQlBSRUZFUkVOQ0VTXSA9IG5ldyBXZWJQcmVmZXJlbmNlc0F0dHJpYnV0ZSh0aGlzKTtcbn07XG4iLCIvLyBXaGVuIHVzaW5nIGNvbnRleHQgaXNvbGF0aW9uLCB0aGUgV2ViVmlld0VsZW1lbnQgYW5kIHRoZSBjdXN0b20gZWxlbWVudFxuLy8gbWV0aG9kcyBoYXZlIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1haW4gd29ybGQgdG8gYmUgYWJsZSB0byBiZSByZWdpc3RlcmVkLlxuLy9cbi8vIE5vdGU6IFRoZSBoaWRkZW4gdmFsdWVzIGNhbiBvbmx5IGJlIHJlYWQvc2V0IGluc2lkZSB0aGUgc2FtZSBjb250ZXh0LCBhbGxcbi8vIG1ldGhvZHMgdGhhdCBhY2Nlc3MgdGhlIFwiaW50ZXJuYWxcIiBoaWRkZW4gdmFsdWUgbXVzdCBiZSBwdXQgaW4gdGhpcyBmaWxlLlxuLy9cbi8vIE5vdGU6IFRoaXMgZmlsZSBjb3VsZCBiZSBsb2FkZWQgaW4gdGhlIG1haW4gd29ybGQgb2YgY29udGV4dElzb2xhdGlvbiBwYWdlLFxuLy8gd2hpY2ggcnVucyBpbiBicm93c2VyaWZ5IGVudmlyb25tZW50IGluc3RlYWQgb2YgTm9kZSBlbnZpcm9ubWVudCwgYWxsIG5hdGl2ZVxuLy8gbW9kdWxlcyBtdXN0IGJlIHBhc3NlZCBmcm9tIG91dHNpZGUsIGFsbCBpbmNsdWRlZCBmaWxlcyBtdXN0IGJlIHBsYWluIEpTLlxuXG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IFdlYlZpZXdJbXBsIGFzIElXZWJWaWV3SW1wbCwgd2ViVmlld0ltcGxNb2R1bGUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctaW1wbCc7XG5cbi8vIFJldHVybiBhIFdlYlZpZXdFbGVtZW50IGNsYXNzIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGlzIGNvbnRleHQuXG5jb25zdCBkZWZpbmVXZWJWaWV3RWxlbWVudCA9ICh2OFV0aWw6IE5vZGVKUy5WOFV0aWxCaW5kaW5nLCB3ZWJWaWV3SW1wbDogdHlwZW9mIHdlYlZpZXdJbXBsTW9kdWxlKSA9PiB7XG4gIGNvbnN0IHsgZ3Vlc3RWaWV3SW50ZXJuYWwsIFdlYlZpZXdJbXBsIH0gPSB3ZWJWaWV3SW1wbDtcbiAgcmV0dXJuIGNsYXNzIFdlYlZpZXdFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHB1YmxpYyBpbnRlcm5hbEluc3RhbmNlSWQ/OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcyAoKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BBUlRJVElPTixcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfSFRUUFJFRkVSUkVSLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1VTRVJBR0VOVCxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9OT0RFSU5URUdSQVRJT04sXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfTk9ERUlOVEVHUkFUSU9OSU5TVUJGUkFNRVMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfUExVR0lOUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFV0VCU0VDVVJJVFksXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQUxMT1dQT1BVUFMsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfRU5BQkxFUkVNT1RFTU9EVUxFLFxuICAgICAgICBXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1BSRUxPQUQsXG4gICAgICAgIFdFQl9WSUVXX0NPTlNUQU5UUy5BVFRSSUJVVEVfQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9ESVNBQkxFQkxJTktGRUFUVVJFUyxcbiAgICAgICAgV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9XRUJQUkVGRVJFTkNFU1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHRoaXMsICdpbnRlcm5hbCcsIG5ldyBXZWJWaWV3SW1wbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2sgKCkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmICghaW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRlcm5hbC5lbGVtZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZ3Vlc3RWaWV3SW50ZXJuYWwucmVnaXN0ZXJFdmVudHMoaW50ZXJuYWwsIGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgICAgaW50ZXJuYWwuZWxlbWVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgICAgICAgaW50ZXJuYWwuYXR0cmlidXRlc1tXRUJfVklFV19DT05TVEFOVFMuQVRUUklCVVRFX1NSQ10ucGFyc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWU6IHN0cmluZywgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSB2OFV0aWwuZ2V0SGlkZGVuVmFsdWU8SVdlYlZpZXdJbXBsPih0aGlzLCAnaW50ZXJuYWwnKTtcbiAgICAgIGlmIChpbnRlcm5hbCkge1xuICAgICAgICBpbnRlcm5hbC5oYW5kbGVXZWJ2aWV3QXR0cmlidXRlTXV0YXRpb24obmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjayAoKSB7XG4gICAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxJV2ViVmlld0ltcGw+KHRoaXMsICdpbnRlcm5hbCcpO1xuICAgICAgaWYgKCFpbnRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBndWVzdFZpZXdJbnRlcm5hbC5kZXJlZ2lzdGVyRXZlbnRzKGludGVybmFsLnZpZXdJbnN0YW5jZUlkKTtcbiAgICAgIGludGVybmFsLmVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRlcm5hbEluc3RhbmNlSWQgPSAwO1xuICAgICAgaW50ZXJuYWwucmVzZXQoKTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBSZWdpc3RlciA8d2Vidmlldz4gY3VzdG9tIGVsZW1lbnQuXG5jb25zdCByZWdpc3RlcldlYlZpZXdFbGVtZW50ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgLy8gSSB3aXNoIGVzbGludCB3YXNuJ3Qgc28gc3R1cGlkLCBidXQgaXQgaXNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFdlYlZpZXdFbGVtZW50ID0gZGVmaW5lV2ViVmlld0VsZW1lbnQodjhVdGlsLCB3ZWJWaWV3SW1wbCkgYXMgdW5rbm93biBhcyB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudFxuXG4gIHdlYlZpZXdJbXBsLnNldHVwTWV0aG9kcyhXZWJWaWV3RWxlbWVudCk7XG5cbiAgLy8gVGhlIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBoYXMgdG8gYmUgY2FsbGVkIGluIGEgc3BlY2lhbCBzY29wZS5cbiAgY29uc3Qgd2ViRnJhbWUgPSB3ZWJWaWV3SW1wbC53ZWJGcmFtZSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lSW50ZXJuYWw7XG4gIHdlYkZyYW1lLmFsbG93R3Vlc3RWaWV3RWxlbWVudERlZmluaXRpb24od2luZG93LCAoKSA9PiB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnd2VidmlldycsIFdlYlZpZXdFbGVtZW50KTtcbiAgICAod2luZG93IGFzIGFueSkuV2ViVmlldyA9IFdlYlZpZXdFbGVtZW50O1xuXG4gICAgLy8gRGVsZXRlIHRoZSBjYWxsYmFja3Mgc28gZGV2ZWxvcGVycyBjYW5ub3QgY2FsbCB0aGVtIGFuZCBwcm9kdWNlIHVuZXhwZWN0ZWRcbiAgICAvLyBiZWhhdmlvci5cbiAgICBkZWxldGUgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrO1xuICAgIGRlbGV0ZSBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7XG4gICAgZGVsZXRlIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7XG5cbiAgICAvLyBOb3cgdGhhdCB8b2JzZXJ2ZWRBdHRyaWJ1dGVzfCBoYXMgYmVlbiByZXRyaWV2ZWQsIHdlIGNhbiBoaWRlIGl0IGZyb21cbiAgICAvLyB1c2VyIGNvZGUgYXMgd2VsbC5cbiAgICAvLyBUeXBlU2NyaXB0IGlzIGNvbmNlcm5lZCB0aGF0IHdlJ3JlIGRlbGV0aW5nIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZVxuICAgIGRlbGV0ZSAoV2ViVmlld0VsZW1lbnQgYXMgYW55KS5vYnNlcnZlZEF0dHJpYnV0ZXM7XG4gIH0pO1xufTtcblxuLy8gUHJlcGFyZSB0byByZWdpc3RlciB0aGUgPHdlYnZpZXc+IGVsZW1lbnQuXG5leHBvcnQgY29uc3Qgc2V0dXBXZWJWaWV3ID0gKHY4VXRpbDogTm9kZUpTLlY4VXRpbEJpbmRpbmcsIHdlYlZpZXdJbXBsOiB0eXBlb2Ygd2ViVmlld0ltcGxNb2R1bGUpID0+IHtcbiAgY29uc3QgdXNlQ2FwdHVyZSA9IHRydWU7XG4gIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3ZWJWaWV3SW1wbC5zZXR1cEF0dHJpYnV0ZXMoKTtcbiAgICByZWdpc3RlcldlYlZpZXdFbGVtZW50KHY4VXRpbCwgd2ViVmlld0ltcGwpO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgbGlzdGVuZXIsIHVzZUNhcHR1cmUpO1xufTtcbiIsImltcG9ydCB7IHJlbW90ZSwgd2ViRnJhbWUgfSBmcm9tICdlbGVjdHJvbic7XG5cbmltcG9ydCAqIGFzIGlwY1JlbmRlcmVyVXRpbHMgZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbC11dGlscyc7XG5pbXBvcnQgKiBhcyBndWVzdFZpZXdJbnRlcm5hbCBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvZ3Vlc3Qtdmlldy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBXRUJfVklFV19DT05TVEFOVFMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctY29uc3RhbnRzJztcbmltcG9ydCB7IHN5bmNNZXRob2RzLCBhc3luY01ldGhvZHMsIHByb3BlcnRpZXMgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3dlYi12aWV3LW1ldGhvZHMnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUgfSBmcm9tICdAZWxlY3Ryb24vaW50ZXJuYWwvY29tbW9uL3R5cGUtdXRpbHMnO1xuXG5jb25zdCB2OFV0aWwgPSBwcm9jZXNzLmVsZWN0cm9uQmluZGluZygndjhfdXRpbCcpO1xuXG4vLyBJRCBnZW5lcmF0b3IuXG5sZXQgbmV4dElkID0gMDtcblxuY29uc3QgZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKytuZXh0SWQ7XG59O1xuXG4vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgV2ViVmlldyBub2RlLlxuZXhwb3J0IGNsYXNzIFdlYlZpZXdJbXBsIHtcbiAgcHVibGljIGJlZm9yZUZpcnN0TmF2aWdhdGlvbiA9IHRydWVcbiAgcHVibGljIGVsZW1lbnRBdHRhY2hlZCA9IGZhbHNlXG4gIHB1YmxpYyBndWVzdEluc3RhbmNlSWQ/OiBudW1iZXJcbiAgcHVibGljIGhhc0ZvY3VzID0gZmFsc2VcbiAgcHVibGljIGludGVybmFsSW5zdGFuY2VJZD86IG51bWJlcjtcbiAgcHVibGljIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHB1YmxpYyB1c2VyQWdlbnRPdmVycmlkZT86IHN0cmluZztcbiAgcHVibGljIHZpZXdJbnN0YW5jZUlkOiBudW1iZXJcblxuICAvLyBvbiogRXZlbnQgaGFuZGxlcnMuXG4gIHB1YmxpYyBvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBpbnRlcm5hbEVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG5cbiAgLy8gUmVwbGFjZWQgaW4gd2ViLXZpZXctYXR0cmlidXRlc1xuICBwdWJsaWMgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gIHB1YmxpYyBzZXR1cFdlYlZpZXdBdHRyaWJ1dGVzICgpOiB2b2lkIHt9XG5cbiAgY29uc3RydWN0b3IgKHB1YmxpYyB3ZWJ2aWV3Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBDcmVhdGUgaW50ZXJuYWwgaWZyYW1lIGVsZW1lbnQuXG4gICAgdGhpcy5pbnRlcm5hbEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsRWxlbWVudCgpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSB0aGlzLndlYnZpZXdOb2RlLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8IURPQ1RZUEUgaHRtbD48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+Omhvc3QgeyBkaXNwbGF5OiBmbGV4OyB9PC9zdHlsZT4nO1xuICAgIHRoaXMuc2V0dXBXZWJWaWV3QXR0cmlidXRlcygpO1xuICAgIHRoaXMudmlld0luc3RhbmNlSWQgPSBnZXROZXh0SWQoKTtcbiAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHRoaXMuaW50ZXJuYWxFbGVtZW50KTtcblxuICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIGNvbnRlbnRXaW5kb3cuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMud2Vidmlld05vZGUsICdjb250ZW50V2luZG93Jywge1xuICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93O1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUludGVybmFsRWxlbWVudCAoKSB7XG4gICAgY29uc3QgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZUVsZW1lbnQuc3R5bGUuZmxleCA9ICcxIDEgYXV0byc7XG4gICAgaWZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcwJztcbiAgICB2OFV0aWwuc2V0SGlkZGVuVmFsdWUoaWZyYW1lRWxlbWVudCwgJ2ludGVybmFsJywgdGhpcyk7XG4gICAgcmV0dXJuIGlmcmFtZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBSZXNldHMgc29tZSBzdGF0ZSB1cG9uIHJlYXR0YWNoaW5nIDx3ZWJ2aWV3PiBlbGVtZW50IHRvIHRoZSBET00uXG4gIHJlc2V0ICgpIHtcbiAgICAvLyBJZiBndWVzdEluc3RhbmNlSWQgaXMgZGVmaW5lZCB0aGVuIHRoZSA8d2Vidmlldz4gaGFzIG5hdmlnYXRlZCBhbmQgaGFzXG4gICAgLy8gYWxyZWFkeSBwaWNrZWQgdXAgYSBwYXJ0aXRpb24gSUQuIFRodXMsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGluaXRpYWxpemF0aW9uXG4gICAgLy8gc3RhdGUuIEhvd2V2ZXIsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGJlZm9yZUZpcnN0TmF2aWdhdGlvbiBpcyBmYWxzZSBCVVRcbiAgICAvLyBndWVzdEluc3RhbmNlSWQgaGFzIHlldCB0byBiZSBpbml0aWFsaXplZC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgbm90XG4gICAgLy8gaGVhcmQgYmFjayBmcm9tIGNyZWF0ZUd1ZXN0IHlldC4gV2Ugd2lsbCBub3QgcmVzZXQgdGhlIGZsYWcgaW4gdGhpcyBjYXNlIHNvXG4gICAgLy8gdGhhdCB3ZSBkb24ndCBlbmQgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBndWVzdC5cbiAgICBpZiAodGhpcy5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMuZ3Vlc3RJbnN0YW5jZUlkID0gdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRmlyc3ROYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnZhbGlkUGFydGl0aW9uSWQgPSB0cnVlO1xuXG4gICAgLy8gU2luY2UgYXR0YWNobWVudCBzd2FwcyBhIGxvY2FsIGZyYW1lIGZvciBhIHJlbW90ZSBmcmFtZSwgd2UgbmVlZCBvdXJcbiAgICAvLyBpbnRlcm5hbCBpZnJhbWUgZWxlbWVudCB0byBiZSBsb2NhbCBhZ2FpbiBiZWZvcmUgd2UgY2FuIHJlYXR0YWNoLlxuICAgIGNvbnN0IG5ld0ZyYW1lID0gdGhpcy5jcmVhdGVJbnRlcm5hbEVsZW1lbnQoKTtcbiAgICBjb25zdCBvbGRGcmFtZSA9IHRoaXMuaW50ZXJuYWxFbGVtZW50O1xuICAgIHRoaXMuaW50ZXJuYWxFbGVtZW50ID0gbmV3RnJhbWU7XG5cbiAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgb2xkRnJhbWUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RnJhbWUsIG9sZEZyYW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9ic2VydmVyIG1vbml0b3JzIG11dGF0aW9ucyB0byBhdHRyaWJ1dGVzIG9mIHRoZSA8d2Vidmlldz4gYW5kXG4gIC8vIHVwZGF0ZXMgdGhlIEJyb3dzZXJQbHVnaW4gcHJvcGVydGllcyBhY2NvcmRpbmdseS4gSW4gdHVybiwgdXBkYXRpbmdcbiAgLy8gYSBCcm93c2VyUGx1Z2luIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEJyb3dzZXJQbHVnaW5cbiAgLy8gYXR0cmlidXRlLCBpZiBuZWNlc3NhcnkuIFNlZSBCcm93c2VyUGx1Z2luOjpVcGRhdGVET01BdHRyaWJ1dGUgZm9yIG1vcmVcbiAgLy8gZGV0YWlscy5cbiAgaGFuZGxlV2Vidmlld0F0dHJpYnV0ZU11dGF0aW9uIChhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSB8fCB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uaWdub3JlTXV0YXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZXQgdGhlIGNoYW5nZWQgYXR0cmlidXRlIGhhbmRsZSBpdHMgb3duIG11dGF0aW9uXG4gICAgdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmhhbmRsZU11dGF0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBvbkVsZW1lbnRSZXNpemUgKCkge1xuICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gbmV3IEV2ZW50KCdyZXNpemUnKSBhcyBFbGVjdHJvbkludGVybmFsLldlYkZyYW1lUmVzaXplRXZlbnQ7XG4gICAgcmVzaXplRXZlbnQubmV3V2lkdGggPSB0aGlzLndlYnZpZXdOb2RlLmNsaWVudFdpZHRoO1xuICAgIHJlc2l6ZUV2ZW50Lm5ld0hlaWdodCA9IHRoaXMud2Vidmlld05vZGUuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChyZXNpemVFdmVudCk7XG4gIH1cblxuICBjcmVhdGVHdWVzdCAoKSB7XG4gICAgZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3QodGhpcy5idWlsZFBhcmFtcygpKS50aGVuKGd1ZXN0SW5zdGFuY2VJZCA9PiB7XG4gICAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RJbnN0YW5jZUlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUd1ZXN0U3luYyAoKSB7XG4gICAgdGhpcy5iZWZvcmVGaXJzdE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmF0dGFjaEd1ZXN0SW5zdGFuY2UoZ3Vlc3RWaWV3SW50ZXJuYWwuY3JlYXRlR3Vlc3RTeW5jKHRoaXMuYnVpbGRQYXJhbXMoKSkpO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbi5FdmVudCkge1xuICAgIHRoaXMud2Vidmlld05vZGUuZGlzcGF0Y2hFdmVudCh3ZWJWaWV3RXZlbnQpO1xuICB9XG5cbiAgLy8gQWRkcyBhbiAnb248ZXZlbnQ+JyBwcm9wZXJ0eSBvbiB0aGUgd2Vidmlldywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0L3Vuc2V0XG4gIC8vIGFuIGV2ZW50IGhhbmRsZXIuXG4gIHNldHVwRXZlbnRQcm9wZXJ0eSAoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgb24ke2V2ZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLndlYnZpZXdOb2RlLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzLndlYnZpZXdOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLm9uW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25bcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJ2aWV3Tm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVXBkYXRlcyBzdGF0ZSB1cG9uIGxvYWRjb21taXQuXG4gIG9uTG9hZENvbW1pdCAod2ViVmlld0V2ZW50OiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFdmVudCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy53ZWJ2aWV3Tm9kZS5nZXRBdHRyaWJ1dGUoV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkMpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gd2ViVmlld0V2ZW50LnVybDtcbiAgICBpZiAod2ViVmlld0V2ZW50LmlzTWFpbkZyYW1lICYmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpKSB7XG4gICAgICAvLyBUb3VjaGluZyB0aGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG5hdmlnYXRpb24uIFRvIGF2b2lkXG4gICAgICAvLyB0cmlnZ2VyaW5nIGEgcGFnZSByZWxvYWQgb24gZXZlcnkgZ3Vlc3QtaW5pdGlhdGVkIG5hdmlnYXRpb24sXG4gICAgICAvLyB3ZSBkbyBub3QgaGFuZGxlIHRoaXMgbXV0YXRpb24uXG4gICAgICB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9TUkNdLnNldFZhbHVlSWdub3JlTXV0YXRpb24obmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtaXRzIGZvY3VzL2JsdXIgZXZlbnRzLlxuICBvbkZvY3VzQ2hhbmdlICgpIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMud2Vidmlld05vZGU7XG4gICAgaWYgKGhhc0ZvY3VzICE9PSB0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGhhc0ZvY3VzID8gJ2ZvY3VzJyA6ICdibHVyJykpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoIChzdG9yYWdlUGFydGl0aW9uSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbV0VCX1ZJRVdfQ09OU1RBTlRTLkFUVFJJQlVURV9QQVJUSVRJT05dLnNldFZhbHVlKHN0b3JhZ2VQYXJ0aXRpb25JZCk7XG4gIH1cblxuICBidWlsZFBhcmFtcyAoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgaW5zdGFuY2VJZDogdGhpcy52aWV3SW5zdGFuY2VJZCxcbiAgICAgIHVzZXJBZ2VudE92ZXJyaWRlOiB0aGlzLnVzZXJBZ2VudE92ZXJyaWRlXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBpbiB0aGlzLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcGFyYW1zW2F0dHJpYnV0ZU5hbWVdID0gdGhpcy5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLmdldFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGF0dGFjaEd1ZXN0SW5zdGFuY2UgKGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRBdHRhY2hlZCkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgYmUgZGV0YWNoZWQgYmVmb3JlIHdlIGdvdCByZXNwb25zZSBmcm9tIGJyb3dzZXIuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkID0gZ2V0TmV4dElkKCk7XG4gICAgdGhpcy5ndWVzdEluc3RhbmNlSWQgPSBndWVzdEluc3RhbmNlSWQ7XG5cbiAgICBndWVzdFZpZXdJbnRlcm5hbC5hdHRhY2hHdWVzdChcbiAgICAgIHRoaXMuaW50ZXJuYWxJbnN0YW5jZUlkLFxuICAgICAgdGhpcy5ndWVzdEluc3RhbmNlSWQsXG4gICAgICB0aGlzLmJ1aWxkUGFyYW1zKCksXG4gICAgICB0aGlzLmludGVybmFsRWxlbWVudC5jb250ZW50V2luZG93IVxuICAgICk7XG5cbiAgICAvLyBSZXNpemVPYnNlcnZlciBpcyBhIGJyb3dzZXIgZ2xvYmFsIG5vdCByZWNvZ25pemVkIGJ5IFwic3RhbmRhcmRcIi5cbiAgICAvKiBnbG9iYWxzIFJlc2l6ZU9ic2VydmVyICovXG4gICAgLy8gVE9ETyh6Y2JlbnopOiBTaG91bGQgd2UgZGVwcmVjYXRlIHRoZSBcInJlc2l6ZVwiIGV2ZW50PyBXYWl0LCBpdCBpcyBub3RcbiAgICAvLyBldmVuIGRvY3VtZW50ZWQuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLm9uRWxlbWVudFJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5pbnRlcm5hbEVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXR1cEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gIHJlcXVpcmUoJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci93ZWItdmlldy93ZWItdmlldy1hdHRyaWJ1dGVzJyk7XG59O1xuXG4vLyBJIHdpc2ggZXNsaW50IHdhc24ndCBzbyBzdHVwaWQsIGJ1dCBpdCBpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5leHBvcnQgY29uc3Qgc2V0dXBNZXRob2RzID0gKFdlYlZpZXdFbGVtZW50OiB0eXBlb2YgRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCkgPT4ge1xuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZ2V0V2ViQ29udGVudHNJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgbXVzdCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIGFuZCB0aGUgZG9tLXJlYWR5IGV2ZW50IGVtaXR0ZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQ7XG4gIH07XG5cbiAgLy8gV2ViQ29udGVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2Vidmlldy5cbiAgV2ViVmlld0VsZW1lbnQucHJvdG90eXBlLmdldFdlYkNvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVtb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEd1ZXN0V2ViQ29udGVudHMgcmVxdWlyZXMgcmVtb3RlLCB3aGljaCBpcyBub3QgZW5hYmxlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcm5hbCA9IHY4VXRpbC5nZXRIaWRkZW5WYWx1ZTxXZWJWaWV3SW1wbD4odGhpcywgJ2ludGVybmFsJyk7XG4gICAgaWYgKCFpbnRlcm5hbC5ndWVzdEluc3RhbmNlSWQpIHtcbiAgICAgIGludGVybmFsLmNyZWF0ZUd1ZXN0U3luYygpO1xuICAgIH1cblxuICAgIHJldHVybiAocmVtb3RlIGFzIEVsZWN0cm9uLlJlbW90ZUludGVybmFsKS5nZXRHdWVzdFdlYkNvbnRlbnRzKGludGVybmFsLmd1ZXN0SW5zdGFuY2VJZCEpO1xuICB9O1xuXG4gIC8vIEZvY3VzaW5nIHRoZSB3ZWJ2aWV3IHNob3VsZCBtb3ZlIHBhZ2UgZm9jdXMgdG8gdGhlIHVuZGVybHlpbmcgaWZyYW1lLlxuICBXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jb250ZW50V2luZG93LmZvY3VzKCk7XG4gIH07XG5cbiAgLy8gRm9yd2FyZCBwcm90by5mb28qIG1ldGhvZCBjYWxscyB0byBXZWJWaWV3SW1wbC5mb28qLlxuICBjb25zdCBjcmVhdGVCbG9ja0hhbmRsZXIgPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIC4uLmFyZ3M6IEFycmF5PGFueT4pIHtcbiAgICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZVN5bmMoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBzeW5jTWV0aG9kcykge1xuICAgIChXZWJWaWV3RWxlbWVudC5wcm90b3R5cGUgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbWV0aG9kXSA9IGNyZWF0ZUJsb2NrSGFuZGxlcihtZXRob2QpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTm9uQmxvY2tIYW5kbGVyID0gZnVuY3Rpb24gKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50LCAuLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2UoJ0VMRUNUUk9OX0dVRVNUX1ZJRVdfTUFOQUdFUl9DQUxMJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIG1ldGhvZCwgYXJncyk7XG4gICAgfTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBhc3luY01ldGhvZHMpIHtcbiAgICAoV2ViVmlld0VsZW1lbnQucHJvdG90eXBlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW21ldGhvZF0gPSBjcmVhdGVOb25CbG9ja0hhbmRsZXIobWV0aG9kKTtcbiAgfVxuXG4gIFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZS5jYXB0dXJlUGFnZSA9IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKGF3YWl0IGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfQ0FQVFVSRV9QQUdFJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIGFyZ3MpKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVQcm9wZXJ0eUdldHRlciA9IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBFbGVjdHJvbkludGVybmFsLldlYlZpZXdFbGVtZW50KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfR0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5KTtcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVByb3BlcnR5U2V0dGVyID0gZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IEVsZWN0cm9uSW50ZXJuYWwuV2ViVmlld0VsZW1lbnQsIGFyZzogYW55KSB7XG4gICAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9WSUVXX01BTkFHRVJfUFJPUEVSVFlfU0VUJywgdGhpcy5nZXRXZWJDb250ZW50c0lkKCksIHByb3BlcnR5LCBhcmcpO1xuICAgIH07XG4gIH07XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlZpZXdFbGVtZW50LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgIGdldDogY3JlYXRlUHJvcGVydHlHZXR0ZXIocHJvcGVydHkpIGFzIGFueSxcbiAgICAgIHNldDogY3JlYXRlUHJvcGVydHlTZXR0ZXIocHJvcGVydHkpXG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3ZWJWaWV3SW1wbE1vZHVsZSA9IHtcbiAgc2V0dXBBdHRyaWJ1dGVzLFxuICBzZXR1cE1ldGhvZHMsXG4gIGd1ZXN0Vmlld0ludGVybmFsLFxuICB3ZWJGcmFtZSxcbiAgV2ViVmlld0ltcGxcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5cbmNvbnN0IHY4VXRpbCA9IHByb2Nlc3MuZWxlY3Ryb25CaW5kaW5nKCd2OF91dGlsJyk7XG5cbmZ1bmN0aW9uIGhhbmRsZUZvY3VzQmx1ciAoZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXIpIHtcbiAgLy8gTm90ZSB0aGF0IHdoaWxlIENocm9taXVtIGNvbnRlbnQgQVBJcyBoYXZlIG9ic2VydmVyIGZvciBmb2N1cy9ibHVyLCB0aGV5XG4gIC8vIHVuZm9ydHVuYXRlbHkgZG8gbm90IHdvcmsgZm9yIHdlYnZpZXcuXG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIHRydWUsIGd1ZXN0SW5zdGFuY2VJZCk7XG4gIH0pO1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZCgnRUxFQ1RST05fR1VFU1RfVklFV19NQU5BR0VSX0ZPQ1VTX0NIQU5HRScsIGZhbHNlLCBndWVzdEluc3RhbmNlSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYlZpZXdJbml0IChcbiAgY29udGV4dElzb2xhdGlvbjogYm9vbGVhbiwgd2Vidmlld1RhZzogRWxlY3Ryb25JbnRlcm5hbC5XZWJWaWV3RWxlbWVudCwgZ3Vlc3RJbnN0YW5jZUlkOiBudW1iZXJcbikge1xuICAvLyBEb24ndCBhbGxvdyByZWN1cnNpdmUgYDx3ZWJ2aWV3PmAuXG4gIGlmICh3ZWJ2aWV3VGFnICYmIGd1ZXN0SW5zdGFuY2VJZCA9PSBudWxsKSB7XG4gICAgY29uc3QgeyB3ZWJWaWV3SW1wbE1vZHVsZSB9ID0gcmVxdWlyZSgnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL3dlYi12aWV3L3dlYi12aWV3LWltcGwnKTtcbiAgICBpZiAoY29udGV4dElzb2xhdGlvbikge1xuICAgICAgdjhVdGlsLnNldEhpZGRlblZhbHVlKHdpbmRvdywgJ3dlYi12aWV3LWltcGwnLCB3ZWJWaWV3SW1wbE1vZHVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc2V0dXBXZWJWaWV3IH0gPSByZXF1aXJlKCdAZWxlY3Ryb24vaW50ZXJuYWwvcmVuZGVyZXIvd2ViLXZpZXcvd2ViLXZpZXctZWxlbWVudCcpO1xuICAgICAgc2V0dXBXZWJWaWV3KHY4VXRpbCwgd2ViVmlld0ltcGxNb2R1bGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChndWVzdEluc3RhbmNlSWQpIHtcbiAgICAvLyBSZXBvcnQgZm9jdXMvYmx1ciBldmVudHMgb2Ygd2VidmlldyB0byBicm93c2VyLlxuICAgIGhhbmRsZUZvY3VzQmx1cihndWVzdEluc3RhbmNlSWQpO1xuICB9XG59XG4iLCIvLyBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsb2JhbCwgcHJvY2VzcyBhbmQgQnVmZmVyIHZhcmlhYmxlcyB0byBpbnRlcm5hbFxuLy8gRWxlY3Ryb24gY29kZSBvbmNlIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLlxuLy9cbi8vIEl0IGRvZXMgdGhpcyB0aHJvdWdoIHRoZSBQcm92aWRlUGx1Z2luIGluIHRoZSB3ZWJwYWNrLmNvbmZpZy5iYXNlLmpzIGZpbGVcbi8vIENoZWNrIG91dCB0aGUgTW9kdWxlLndyYXBwZXIgb3ZlcnJpZGUgaW4gcmVuZGVyZXIvaW5pdC50cyBmb3IgbW9yZVxuLy8gaW5mb3JtYXRpb24gb24gaG93IHRoaXMgd29ya3MgYW5kIHdoeSB3ZSBuZWVkIGl0XG5cbi8vIFJpcCBnbG9iYWwgb2ZmIG9mIHdpbmRvdyAod2hpY2ggaXMgYWxzbyBnbG9iYWwpIHNvIHRoYXQgd2VicGFjayBkb2Vzbid0XG4vLyBhdXRvIHJlcGxhY2UgaXQgd2l0aCBhIGxvb3BlZCByZWZlcmVuY2UgdG8gdGhpcyBmaWxlXG5jb25zdCBfZ2xvYmFsID0gKHNlbGYgYXMgYW55IHx8IHdpbmRvdyBhcyBhbnkpLmdsb2JhbCBhcyBOb2RlSlMuR2xvYmFsO1xuY29uc3QgcHJvY2VzcyA9IF9nbG9iYWwucHJvY2VzcztcbmNvbnN0IEJ1ZmZlciA9IF9nbG9iYWwuQnVmZmVyO1xuXG5leHBvcnQge1xuICBfZ2xvYmFsLFxuICBwcm9jZXNzLFxuICBCdWZmZXJcbn07XG4iLCJpbXBvcnQgeyBpcGNSZW5kZXJlckludGVybmFsIH0gZnJvbSAnQGVsZWN0cm9uL2ludGVybmFsL3JlbmRlcmVyL2lwYy1yZW5kZXJlci1pbnRlcm5hbCc7XG5pbXBvcnQgKiBhcyBpcGNSZW5kZXJlclV0aWxzIGZyb20gJ0BlbGVjdHJvbi9pbnRlcm5hbC9yZW5kZXJlci9pcGMtcmVuZGVyZXItaW50ZXJuYWwtdXRpbHMnO1xuXG4vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4vLyAtIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5mb3J3YXJkKClcbi8vIC0gd2luZG93Lmhpc3RvcnkuZ28oKVxuLy8gLSB3aW5kb3cuaGlzdG9yeS5sZW5ndGhcbi8vIC0gd2luZG93Lm9wZW4oKVxuLy8gLSB3aW5kb3cub3BlbmVyLmJsdXIoKVxuLy8gLSB3aW5kb3cub3BlbmVyLmNsb3NlKClcbi8vIC0gd2luZG93Lm9wZW5lci5ldmFsKClcbi8vIC0gd2luZG93Lm9wZW5lci5mb2N1cygpXG4vLyAtIHdpbmRvdy5vcGVuZXIubG9jYXRpb25cbi8vIC0gd2luZG93Lm9wZW5lci5wcmludCgpXG4vLyAtIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoKVxuLy8gLSB3aW5kb3cucHJvbXB0KClcbi8vIC0gZG9jdW1lbnQuaGlkZGVuXG4vLyAtIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVzb2x2ZSByZWxhdGl2ZSB1cmwuXG5jb25zdCByZXNvbHZlVVJMID0gKHVybDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpID0+IG5ldyBVUkwodXJsLCBiYXNlKS5ocmVmO1xuXG4vLyBVc2UgdGhpcyBtZXRob2QgdG8gZW5zdXJlIHZhbHVlcyBleHBlY3RlZCBhcyBzdHJpbmdzIGluIHRoZSBtYWluIHByb2Nlc3Ncbi8vIGFyZSBjb252ZXJ0aWJsZSB0byBzdHJpbmdzIGluIHRoZSByZW5kZXJlciBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgZXhjZXB0aW9uc1xuLy8gY29udmVydGluZyB2YWx1ZXMgdG8gc3RyaW5ncyBhcmUgdGhyb3duIGluIHRoaXMgcHJvY2Vzcy5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBgJHt2YWx1ZX1gIDogdmFsdWU7XG59O1xuXG5jb25zdCB3aW5kb3dQcm94aWVzOiBSZWNvcmQ8bnVtYmVyLCBCcm93c2VyV2luZG93UHJveHk+ID0ge307XG5cbmNvbnN0IGdldE9yQ3JlYXRlUHJveHkgPSAoZ3Vlc3RJZDogbnVtYmVyKSA9PiB7XG4gIGxldCBwcm94eSA9IHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG4gIGlmIChwcm94eSA9PSBudWxsKSB7XG4gICAgcHJveHkgPSBuZXcgQnJvd3NlcldpbmRvd1Byb3h5KGd1ZXN0SWQpO1xuICAgIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF0gPSBwcm94eTtcbiAgfVxuICByZXR1cm4gcHJveHk7XG59O1xuXG5jb25zdCByZW1vdmVQcm94eSA9IChndWVzdElkOiBudW1iZXIpID0+IHtcbiAgZGVsZXRlIHdpbmRvd1Byb3hpZXNbZ3Vlc3RJZF07XG59O1xuXG50eXBlIExvY2F0aW9uUHJvcGVydGllcyA9ICdoYXNoJyB8ICdocmVmJyB8ICdob3N0JyB8ICdob3N0bmFtZScgfCAnb3JpZ2luJyB8ICdwYXRobmFtZScgfCAncG9ydCcgfCAncHJvdG9jb2wnIHwgJ3NlYXJjaCdcblxuY2xhc3MgTG9jYXRpb25Qcm94eSB7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhhc2ghOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhyZWYhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3QhOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIGhvc3RuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBvcmlnaW4hOiBzdHJpbmc7XG4gIEBMb2NhdGlvblByb3h5LlByb3h5UHJvcGVydHkgcHVibGljIHBhdGhuYW1lITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwb3J0ITogc3RyaW5nO1xuICBATG9jYXRpb25Qcm94eS5Qcm94eVByb3BlcnR5IHB1YmxpYyBwcm90b2NvbCE6IHN0cmluZztcbiAgQExvY2F0aW9uUHJveHkuUHJveHlQcm9wZXJ0eSBwdWJsaWMgc2VhcmNoITogVVJMU2VhcmNoUGFyYW1zO1xuXG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCZXdhcmU6IFRoaXMgZGVjb3JhdG9yIHdpbGwgaGF2ZSB0aGUgX3Byb3RvdHlwZV8gYXMgdGhlIGB0YXJnZXRgLiBJdCBkZWZpbmVzIHByb3BlcnRpZXNcbiAgICogY29tbW9ubHkgZm91bmQgaW4gVVJMIG9uIHRoZSBMb2NhdGlvblByb3h5LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgUHJveHlQcm9wZXJ0eTxUPiAodGFyZ2V0OiBMb2NhdGlvblByb3h5LCBwcm9wZXJ0eUtleTogTG9jYXRpb25Qcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHkpOiBUIHwgc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZ3Vlc3RVUkwgPSB0aGlzLmdldEd1ZXN0VVJMKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ3Vlc3RVUkwgPyBndWVzdFVSTFtwcm9wZXJ0eUtleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IExvY2F0aW9uUHJveHksIG5ld1ZhbDogVCkge1xuICAgICAgICBjb25zdCBndWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwoKTtcbiAgICAgICAgaWYgKGd1ZXN0VVJMKSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHdhbnQgdXMgdG8gYXNzaWduIHRvIHJlYWQtb25seSB2YXJpYWJsZXMuXG4gICAgICAgICAgLy8gSXQncyByaWdodCwgdGhhdCdzIGJhZCwgYnV0IHdlJ3JlIGRvaW5nIGl0IGFud2F5LlxuICAgICAgICAgIChndWVzdFVSTCBhcyBhbnkpW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIGd1ZXN0VVJMLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgLy8gZXNsaW50IHdpbGwgY29uc2lkZXIgdGhlIGNvbnN0cnVjdG9yIFwidXNlbGVzc1wiXG4gICAgLy8gdW5sZXNzIHdlIGFzc2lnbiB0aGVtIGluIHRoZSBib2R5LiBJdCdzIGZpbmUsIHRoYXQncyB3aGF0XG4gICAgLy8gVFMgd291bGQgZG8gYW55d2F5LlxuICAgIHRoaXMuZ3Vlc3RJZCA9IGd1ZXN0SWQ7XG4gICAgdGhpcy5nZXRHdWVzdFVSTCA9IHRoaXMuZ2V0R3Vlc3RVUkwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZyAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdFVSTCAoKTogVVJMIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsU3RyaW5nID0gdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jKCdnZXRVUkwnKSBhcyBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignTG9jYXRpb25Qcm94eTogZmFpbGVkIHRvIHBhcnNlIHN0cmluZycsIHVybFN0cmluZywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VXZWJDb250ZW50c01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2RTeW5jIChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gaXBjUmVuZGVyZXJVdGlscy5pbnZva2VTeW5jKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XRUJfQ09OVEVOVFNfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmNsYXNzIEJyb3dzZXJXaW5kb3dQcm94eSB7XG4gIHB1YmxpYyBjbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvblByb3h5XG4gIHByaXZhdGUgZ3Vlc3RJZDogbnVtYmVyXG5cbiAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IGFsbG93IGdldHRlcnMvYWNjZXNzb3JzIHdpdGggZGlmZmVyZW50IHR5cGVzLFxuICAvLyBzbyBmb3Igbm93LCB3ZSdsbCBoYXZlIHRvIG1ha2UgZG8gd2l0aCBhbiBcImFueVwiIGluIHRoZSBtaXguXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUyMVxuICBwdWJsaWMgZ2V0IGxvY2F0aW9uICgpOiBMb2NhdGlvblByb3h5IHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cbiAgcHVibGljIHNldCBsb2NhdGlvbiAodXJsOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgdGhpcy5sb2NhdGlvbi5ocmVmKTtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnbG9hZFVSTCcsIHVybCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvciAoZ3Vlc3RJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5ndWVzdElkID0gZ3Vlc3RJZDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IG5ldyBMb2NhdGlvblByb3h5KGd1ZXN0SWQpO1xuXG4gICAgaXBjUmVuZGVyZXJJbnRlcm5hbC5vbmNlKGBFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfQ0xPU0VEXyR7Z3Vlc3RJZH1gLCAoKSA9PiB7XG4gICAgICByZW1vdmVQcm94eShndWVzdElkKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSAoKSB7XG4gICAgdGhpcy5faW52b2tlV2luZG93TWV0aG9kKCdkZXN0cm95Jyk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMgKCkge1xuICAgIHRoaXMuX2ludm9rZVdpbmRvd01ldGhvZCgnZm9jdXMnKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyICgpIHtcbiAgICB0aGlzLl9pbnZva2VXaW5kb3dNZXRob2QoJ2JsdXInKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludCAoKSB7XG4gICAgdGhpcy5faW52b2tlV2ViQ29udGVudHNNZXRob2QoJ3ByaW50Jyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdE1lc3NhZ2UgKG1lc3NhZ2U6IGFueSwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpIHtcbiAgICBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX1BPU1RNRVNTQUdFJywgdGhpcy5ndWVzdElkLCBtZXNzYWdlLCB0b1N0cmluZyh0YXJnZXRPcmlnaW4pLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsIChjb2RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnZva2VXZWJDb250ZW50c01ldGhvZCgnZXhlY3V0ZUphdmFTY3JpcHQnLCBjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZVdpbmRvd01ldGhvZCAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGlwY1JlbmRlcmVyVXRpbHMuaW52b2tlKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfTUFOQUdFUl9XSU5ET1dfTUVUSE9EJywgdGhpcy5ndWVzdElkLCBtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW52b2tlV2ViQ29udGVudHNNZXRob2QgKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpcGNSZW5kZXJlclV0aWxzLmludm9rZSgnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0VCX0NPTlRFTlRTX01FVEhPRCcsIHRoaXMuZ3Vlc3RJZCwgbWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93U2V0dXAgPSAoXG4gIGd1ZXN0SW5zdGFuY2VJZDogbnVtYmVyLCBvcGVuZXJJZDogbnVtYmVyLCBpc0hpZGRlblBhZ2U6IGJvb2xlYW4sIHVzZXNOYXRpdmVXaW5kb3dPcGVuOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCAmJiBndWVzdEluc3RhbmNlSWQgPT0gbnVsbCkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgd2luZG93LmNsb3NlLlxuICAgIHdpbmRvdy5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlwY1JlbmRlcmVySW50ZXJuYWwuc2VuZFN5bmMoJ0VMRUNUUk9OX0JST1dTRVJfV0lORE9XX0NMT1NFJyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghdXNlc05hdGl2ZVdpbmRvd09wZW4pIHtcbiAgICAvLyBNYWtlIHRoZSBicm93c2VyIHdpbmRvdyBvciBndWVzdCB2aWV3IGVtaXQgXCJuZXctd2luZG93XCIgZXZlbnQuXG4gICAgKHdpbmRvdyBhcyBhbnkpLm9wZW4gPSBmdW5jdGlvbiAodXJsPzogc3RyaW5nLCBmcmFtZU5hbWU/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKSB7XG4gICAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsICE9PSAnJykge1xuICAgICAgICB1cmwgPSByZXNvbHZlVVJMKHVybCwgbG9jYXRpb24uaHJlZik7XG4gICAgICB9XG4gICAgICBjb25zdCBndWVzdElkID0gaXBjUmVuZGVyZXJJbnRlcm5hbC5zZW5kU3luYygnRUxFQ1RST05fR1VFU1RfV0lORE9XX01BTkFHRVJfV0lORE9XX09QRU4nLCB1cmwsIHRvU3RyaW5nKGZyYW1lTmFtZSksIHRvU3RyaW5nKGZlYXR1cmVzKSk7XG4gICAgICBpZiAoZ3Vlc3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVByb3h5KGd1ZXN0SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcGVuZXJJZCAhPSBudWxsKSB7XG4gICAgd2luZG93Lm9wZW5lciA9IGdldE9yQ3JlYXRlUHJveHkob3BlbmVySWQpO1xuICB9XG5cbiAgLy8gQnV0IHdlIGRvIG5vdCBzdXBwb3J0IHByb21wdCgpLlxuICB3aW5kb3cucHJvbXB0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvbXB0KCkgaXMgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4nKTtcbiAgfTtcblxuICBpZiAoIXVzZXNOYXRpdmVXaW5kb3dPcGVuIHx8IG9wZW5lcklkICE9IG51bGwpIHtcbiAgICBpcGNSZW5kZXJlckludGVybmFsLm9uKCdFTEVDVFJPTl9HVUVTVF9XSU5ET1dfUE9TVE1FU1NBR0UnLCBmdW5jdGlvbiAoXG4gICAgICBfZXZlbnQsIHNvdXJjZUlkOiBudW1iZXIsIG1lc3NhZ2U6IGFueSwgc291cmNlT3JpZ2luOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIC8vIE1hbnVhbGx5IGRpc3BhdGNoIGV2ZW50IGluc3RlYWQgb2YgdXNpbmcgcG9zdE1lc3NhZ2UgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG9cbiAgICAgIC8vIHNldCBldmVudC5zb3VyY2UuXG4gICAgICAvL1xuICAgICAgLy8gV2h5IGFueT8gV2UgY2FuJ3QgY29uc3RydWN0IGEgTWVzc2FnZUV2ZW50IGFuZCB3ZSBjYW4ndFxuICAgICAgLy8gdXNlIGBhcyBNZXNzYWdlRXZlbnRgIGJlY2F1c2UgeW91J3JlIG5vdCBzdXBwb3NlZCB0byBvdmVycmlkZVxuICAgICAgLy8gZGF0YSwgb3JpZ2luLCBhbmQgc291cmNlXG4gICAgICBjb25zdCBldmVudDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ21lc3NhZ2UnLCBmYWxzZSwgZmFsc2UpO1xuXG4gICAgICBldmVudC5kYXRhID0gbWVzc2FnZTtcbiAgICAgIGV2ZW50Lm9yaWdpbiA9IHNvdXJjZU9yaWdpbjtcbiAgICAgIGV2ZW50LnNvdXJjZSA9IGdldE9yQ3JlYXRlUHJveHkoc291cmNlSWQpO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCBhcyBNZXNzYWdlRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFwcm9jZXNzLnNhbmRib3hlZCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19CQUNLJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19GT1JXQVJEJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LmdvID0gZnVuY3Rpb24gKG9mZnNldDogbnVtYmVyKSB7XG4gICAgICBpcGNSZW5kZXJlckludGVybmFsLnNlbmQoJ0VMRUNUUk9OX05BVklHQVRJT05fQ09OVFJPTExFUl9HT19UT19PRkZTRVQnLCArb2Zmc2V0KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5oaXN0b3J5LCAnbGVuZ3RoJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpcGNSZW5kZXJlckludGVybmFsLnNlbmRTeW5jKCdFTEVDVFJPTl9OQVZJR0FUSU9OX0NPTlRST0xMRVJfTEVOR1RIJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3Vlc3RJbnN0YW5jZUlkICE9IG51bGwpIHtcbiAgICAvLyBXZWJ2aWV3IGBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGVgIHRyYWNrcyB3aW5kb3cgdmlzaWJpbGl0eSAoYW5kIGlnbm9yZXNcbiAgICAvLyB0aGUgYWN0dWFsIDx3ZWJ2aWV3PiBlbGVtZW50IHZpc2liaWxpdHkpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiAjOTE3OC5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIChzaW5jZVxuICAgIC8vIENocm9taXVtIGFsc28gZmlyZXMgdGhlbSkgYW5kIHBvdGVudGlhbGx5IGluY29ycmVjdCB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAvLyBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uIGZvciBFbGVjdHJvbiAyLjAuXG4gICAgbGV0IGNhY2hlZFZpc2liaWxpdHlTdGF0ZSA9IGlzSGlkZGVuUGFnZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpc2liaWxpdHlTdGF0ZSBjaGFuZ2VzLlxuICAgIGlwY1JlbmRlcmVySW50ZXJuYWwub24oJ0VMRUNUUk9OX0dVRVNUX0lOU1RBTkNFX1ZJU0lCSUxJVFlfQ0hBTkdFJywgZnVuY3Rpb24gKF9ldmVudCwgdmlzaWJpbGl0eVN0YXRlOiBWaXNpYmlsaXR5U3RhdGUpIHtcbiAgICAgIGlmIChjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09IHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd2aXNpYmlsaXR5Y2hhbmdlJykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTWFrZSBkb2N1bWVudC5oaWRkZW4gYW5kIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRWaXNpYmlsaXR5U3RhdGUgIT09ICd2aXNpYmxlJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgJ3Zpc2liaWxpdHlTdGF0ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkVmlzaWJpbGl0eVN0YXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzdHJlYW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidGltZXJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/electron/js2c/renderer_init.js"},"absolutePath":"/Users/roblou/code/vscode/external \"util\"","resolvedUrl":"file:///Users/roblou/code/vscode/external%20\"util\"","sourceMapSources":["webpack:///webpack/bootstrap","webpack:///lib/browser/api/module-keys.js","webpack:///lib/common/api/clipboard.js","webpack:///lib/common/api/deprecate.ts","webpack:///lib/common/api/exports/electron.js","webpack:///lib/common/api/module-list.js","webpack:///lib/common/api/native-image.js","webpack:///lib/common/api/shell.js","webpack:///lib/common/buffer-utils.ts","webpack:///lib/common/crash-reporter.js","webpack:///lib/common/electron-binding-setup.ts","webpack:///lib/common/error-utils.ts","webpack:///lib/common/init.ts","webpack:///lib/common/is-promise.ts","webpack:///lib/common/reset-search-paths.ts","webpack:///lib/common/type-utils.ts","webpack:///lib/common/web-view-methods.ts","webpack:///lib/common/webpack-globals-provider.ts","webpack:///lib/renderer/api/context-bridge.ts","webpack:///lib/renderer/api/crash-reporter.js","webpack:///lib/renderer/api/desktop-capturer.ts","webpack:///lib/renderer/api/exports/electron.js","webpack:///lib/renderer/api/ipc-renderer.js","webpack:///lib/renderer/api/module-list.js","webpack:///lib/renderer/api/remote.js","webpack:///lib/renderer/api/web-frame.ts","webpack:///lib/renderer/callbacks-registry.ts","webpack:///lib/renderer/chrome-api.ts","webpack:///lib/renderer/content-scripts-injector.ts","webpack:///lib/renderer/extensions/event.ts","webpack:///lib/renderer/extensions/i18n.ts","webpack:///lib/renderer/extensions/storage.ts","webpack:///lib/renderer/extensions/web-navigation.ts","webpack:///lib/renderer/init.ts","webpack:///lib/renderer/inspector.ts","webpack:///lib/renderer/ipc-renderer-internal-utils.ts","webpack:///lib/renderer/ipc-renderer-internal.ts","webpack:///lib/renderer/security-warnings.ts","webpack:///lib/renderer/web-frame-init.ts","webpack:///lib/renderer/web-view/guest-view-internal.ts","webpack:///lib/renderer/web-view/web-view-attributes.ts","webpack:///lib/renderer/web-view/web-view-element.ts","webpack:///lib/renderer/web-view/web-view-impl.ts","webpack:///lib/renderer/web-view/web-view-init.ts","webpack:///lib/renderer/webpack-provider.ts","webpack:///lib/renderer/window-setup.ts","webpack:///external \"buffer\"","webpack:///external \"events\"","webpack:///external \"module\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"timers\"","webpack:///external \"url\"","webpack:///external \"util\""]},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":63,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/webpack/bootstrap","path":"/Users/roblou/code/vscode/webpack/bootstrap","sourceReference":249815897}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":64,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/browser/api/module-keys.js","path":"/Users/roblou/code/vscode/lib/browser/api/module-keys.js","sourceReference":1785177281}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":65,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/api/clipboard.js","path":"/Users/roblou/code/vscode/lib/common/api/clipboard.js","sourceReference":1547796004}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":66,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/api/deprecate.ts","path":"/Users/roblou/code/vscode/lib/common/api/deprecate.ts","sourceReference":749268651}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":67,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/api/exports/electron.js","path":"/Users/roblou/code/vscode/lib/common/api/exports/electron.js","sourceReference":1331343383}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":68,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/api/module-list.js","path":"/Users/roblou/code/vscode/lib/common/api/module-list.js","sourceReference":1963017055}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":69,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/api/native-image.js","path":"/Users/roblou/code/vscode/lib/common/api/native-image.js","sourceReference":846707077}}}},"level":0} {"tag":"dap.send","timestamp":1588425100826,"metadata":{"connectionId":1,"message":{"seq":70,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/api/shell.js","path":"/Users/roblou/code/vscode/lib/common/api/shell.js","sourceReference":131181183}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":71,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/buffer-utils.ts","path":"/Users/roblou/code/vscode/lib/common/buffer-utils.ts","sourceReference":797137507}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":72,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/crash-reporter.js","path":"/Users/roblou/code/vscode/lib/common/crash-reporter.js","sourceReference":159595274}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":73,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/electron-binding-setup.ts","path":"/Users/roblou/code/vscode/lib/common/electron-binding-setup.ts","sourceReference":371261755}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":74,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/error-utils.ts","path":"/Users/roblou/code/vscode/lib/common/error-utils.ts","sourceReference":1573975739}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":75,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/init.ts","path":"/Users/roblou/code/vscode/lib/common/init.ts","sourceReference":421222695}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":76,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/is-promise.ts","path":"/Users/roblou/code/vscode/lib/common/is-promise.ts","sourceReference":723463343}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":77,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/reset-search-paths.ts","path":"/Users/roblou/code/vscode/lib/common/reset-search-paths.ts","sourceReference":104988450}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":78,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/type-utils.ts","path":"/Users/roblou/code/vscode/lib/common/type-utils.ts","sourceReference":1818785649}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":79,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/web-view-methods.ts","path":"/Users/roblou/code/vscode/lib/common/web-view-methods.ts","sourceReference":1442397748}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":80,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/common/webpack-globals-provider.ts","path":"/Users/roblou/code/vscode/lib/common/webpack-globals-provider.ts","sourceReference":856657763}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":81,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/context-bridge.ts","path":"/Users/roblou/code/vscode/lib/renderer/api/context-bridge.ts","sourceReference":222824129}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":82,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/crash-reporter.js","path":"/Users/roblou/code/vscode/lib/renderer/api/crash-reporter.js","sourceReference":680816476}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":83,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/desktop-capturer.ts","path":"/Users/roblou/code/vscode/lib/renderer/api/desktop-capturer.ts","sourceReference":1295686000}}}},"level":0} {"tag":"dap.send","timestamp":1588425100827,"metadata":{"connectionId":1,"message":{"seq":84,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/exports/electron.js","path":"/Users/roblou/code/vscode/lib/renderer/api/exports/electron.js","sourceReference":1164464058}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":85,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/ipc-renderer.js","path":"/Users/roblou/code/vscode/lib/renderer/api/ipc-renderer.js","sourceReference":1216050289}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":86,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/module-list.js","path":"/Users/roblou/code/vscode/lib/renderer/api/module-list.js","sourceReference":741780011}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":87,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/remote.js","path":"/Users/roblou/code/vscode/lib/renderer/api/remote.js","sourceReference":532418871}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":88,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/api/web-frame.ts","path":"/Users/roblou/code/vscode/lib/renderer/api/web-frame.ts","sourceReference":245658497}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":89,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/callbacks-registry.ts","path":"/Users/roblou/code/vscode/lib/renderer/callbacks-registry.ts","sourceReference":1961730140}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":90,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/chrome-api.ts","path":"/Users/roblou/code/vscode/lib/renderer/chrome-api.ts","sourceReference":568575030}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":91,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/content-scripts-injector.ts","path":"/Users/roblou/code/vscode/lib/renderer/content-scripts-injector.ts","sourceReference":1679937963}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":92,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/extensions/event.ts","path":"/Users/roblou/code/vscode/lib/renderer/extensions/event.ts","sourceReference":1745443574}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":93,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/extensions/i18n.ts","path":"/Users/roblou/code/vscode/lib/renderer/extensions/i18n.ts","sourceReference":1305509562}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":94,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/extensions/storage.ts","path":"/Users/roblou/code/vscode/lib/renderer/extensions/storage.ts","sourceReference":1131993887}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":95,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/extensions/web-navigation.ts","path":"/Users/roblou/code/vscode/lib/renderer/extensions/web-navigation.ts","sourceReference":2061268536}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":96,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/init.ts","path":"/Users/roblou/code/vscode/lib/renderer/init.ts","sourceReference":40587397}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":97,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/inspector.ts","path":"/Users/roblou/code/vscode/lib/renderer/inspector.ts","sourceReference":1179801953}}}},"level":0} {"tag":"dap.send","timestamp":1588425100828,"metadata":{"connectionId":1,"message":{"seq":98,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal-utils.ts","path":"/Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal-utils.ts","sourceReference":1315946507}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":99,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal.ts","path":"/Users/roblou/code/vscode/lib/renderer/ipc-renderer-internal.ts","sourceReference":592912652}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":100,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/security-warnings.ts","path":"/Users/roblou/code/vscode/lib/renderer/security-warnings.ts","sourceReference":1055224817}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":101,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/web-frame-init.ts","path":"/Users/roblou/code/vscode/lib/renderer/web-frame-init.ts","sourceReference":1384266672}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":102,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/web-view/guest-view-internal.ts","path":"/Users/roblou/code/vscode/lib/renderer/web-view/guest-view-internal.ts","sourceReference":710991549}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":103,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-attributes.ts","path":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-attributes.ts","sourceReference":1493262571}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":104,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-element.ts","path":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-element.ts","sourceReference":1105360372}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":105,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-impl.ts","path":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-impl.ts","sourceReference":1436769009}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":106,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-init.ts","path":"/Users/roblou/code/vscode/lib/renderer/web-view/web-view-init.ts","sourceReference":1658455010}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":107,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/webpack-provider.ts","path":"/Users/roblou/code/vscode/lib/renderer/webpack-provider.ts","sourceReference":1219320032}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":108,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/lib/renderer/window-setup.ts","path":"/Users/roblou/code/vscode/lib/renderer/window-setup.ts","sourceReference":1057451330}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":109,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"buffer\"","path":"/Users/roblou/code/vscode/external \"buffer\"","sourceReference":1382152923}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":110,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"events\"","path":"/Users/roblou/code/vscode/external \"events\"","sourceReference":541531433}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":111,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"module\"","path":"/Users/roblou/code/vscode/external \"module\"","sourceReference":313040019}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":112,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"path\"","path":"/Users/roblou/code/vscode/external \"path\"","sourceReference":1342796389}}}},"level":0} {"tag":"dap.send","timestamp":1588425100829,"metadata":{"connectionId":1,"message":{"seq":113,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"stream\"","path":"/Users/roblou/code/vscode/external \"stream\"","sourceReference":196077415}}}},"level":0} {"tag":"dap.send","timestamp":1588425100830,"metadata":{"connectionId":1,"message":{"seq":114,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"timers\"","path":"/Users/roblou/code/vscode/external \"timers\"","sourceReference":1167649476}}}},"level":0} {"tag":"dap.send","timestamp":1588425100830,"metadata":{"connectionId":1,"message":{"seq":115,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"url\"","path":"/Users/roblou/code/vscode/external \"url\"","sourceReference":1624516184}}}},"level":0} {"tag":"dap.send","timestamp":1588425100830,"metadata":{"connectionId":1,"message":{"seq":116,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/external \"util\"","path":"/Users/roblou/code/vscode/external \"util\"","sourceReference":1803172499}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100831,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/crypto.js"},"level":0} {"tag":"dap.send","timestamp":1588425100836,"metadata":{"connectionId":1,"message":{"seq":117,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/crypto.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/crypto.js","sourceReference":1034604391}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100839,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/random.js"},"level":0} {"tag":"dap.send","timestamp":1588425100841,"metadata":{"connectionId":1,"message":{"seq":118,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/random.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/random.js","sourceReference":1013063078}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100842,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/pbkdf2.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100842,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/util.js"},"level":0} {"tag":"dap.send","timestamp":1588425100844,"metadata":{"connectionId":1,"message":{"seq":119,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/pbkdf2.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/pbkdf2.js","sourceReference":1231145651}}}},"level":0} {"tag":"dap.send","timestamp":1588425100845,"metadata":{"connectionId":1,"message":{"seq":120,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/util.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/util.js","sourceReference":86503530}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100845,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/scrypt.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100847,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/keygen.js"},"level":0} {"tag":"dap.send","timestamp":1588425100848,"metadata":{"connectionId":1,"message":{"seq":121,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/scrypt.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/scrypt.js","sourceReference":1170410487}}}},"level":0} {"tag":"dap.send","timestamp":1588425100848,"metadata":{"connectionId":1,"message":{"seq":122,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/keygen.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/keygen.js","sourceReference":1661968722}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100849,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/keys.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100852,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/diffiehellman.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100852,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/stream.js"},"level":0} {"tag":"dap.send","timestamp":1588425100853,"metadata":{"connectionId":1,"message":{"seq":123,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/keys.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/keys.js","sourceReference":335470365}}}},"level":0} {"tag":"dap.send","timestamp":1588425100853,"metadata":{"connectionId":1,"message":{"seq":124,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/diffiehellman.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/diffiehellman.js","sourceReference":2092568792}}}},"level":0} {"tag":"dap.send","timestamp":1588425100853,"metadata":{"connectionId":1,"message":{"seq":125,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/stream.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/stream.js","sourceReference":575002920}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100854,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/cipher.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100854,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/lazy_transform.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100856,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/pipeline.js"},"level":0} {"tag":"dap.send","timestamp":1588425100857,"metadata":{"connectionId":1,"message":{"seq":126,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/cipher.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/cipher.js","sourceReference":1695386692}}}},"level":0} {"tag":"dap.send","timestamp":1588425100857,"metadata":{"connectionId":1,"message":{"seq":127,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/lazy_transform.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/lazy_transform.js","sourceReference":235121853}}}},"level":0} {"tag":"dap.send","timestamp":1588425100857,"metadata":{"connectionId":1,"message":{"seq":128,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/pipeline.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/pipeline.js","sourceReference":631373776}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100859,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_readable.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100859,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/end-of-stream.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100859,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/legacy.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100860,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/nls.js","absolutePath":"/Users/roblou/code/vscode/out/vs/nls.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100862,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js"},"level":0} {"tag":"dap.send","timestamp":1588425100862,"metadata":{"connectionId":1,"message":{"seq":129,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_readable.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_readable.js","sourceReference":593446889}}}},"level":0} {"tag":"dap.send","timestamp":1588425100862,"metadata":{"connectionId":1,"message":{"seq":130,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/end-of-stream.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/end-of-stream.js","sourceReference":2133516548}}}},"level":0} {"tag":"dap.send","timestamp":1588425100863,"metadata":{"connectionId":1,"message":{"seq":131,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/legacy.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/legacy.js","sourceReference":574280648}}}},"level":0} {"tag":"dap.send","timestamp":1588425100863,"metadata":{"connectionId":1,"message":{"seq":132,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/nls.js","path":"/Users/roblou/code/vscode/out/vs/nls.js","sourceReference":1524025332}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100863,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/buffer_list.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100864,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/css.js","absolutePath":"/Users/roblou/code/vscode/out/vs/css.js"},"level":0} {"tag":"dap.send","timestamp":1588425100864,"metadata":{"connectionId":1,"message":{"seq":133,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js","path":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js","sourceReference":1101516775}}}},"level":0} {"tag":"dap.send","timestamp":1588425100864,"metadata":{"connectionId":1,"message":{"seq":134,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/buffer_list.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/buffer_list.js","sourceReference":640663056}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100866,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/destroy.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100867,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.nls.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.nls.js"},"level":0} {"tag":"dap.send","timestamp":1588425100867,"metadata":{"connectionId":1,"message":{"seq":135,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/css.js","path":"/Users/roblou/code/vscode/out/vs/css.js","sourceReference":268473600}}}},"level":0} {"tag":"dap.send","timestamp":1588425100867,"metadata":{"connectionId":1,"message":{"seq":136,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/destroy.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/destroy.js","sourceReference":1251091327}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100868,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_writable.js"},"level":0} {"tag":"dap.send","timestamp":1588425100869,"metadata":{"connectionId":1,"message":{"seq":137,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.nls.js","path":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.nls.js","sourceReference":501165211}}}},"level":0} {"tag":"dap.send","timestamp":1588425100869,"metadata":{"connectionId":1,"message":{"seq":138,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_writable.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_writable.js","sourceReference":592752477}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100869,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100870,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_duplex.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100870,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/state.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100871,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100871,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/workbench.desktop.main.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/workbench.desktop.main.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/workbench.desktop.main.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/workbench.desktop.main.ts","sourceMapSources":["vs/workbench/workbench.desktop.main.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100871,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100872,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_transform.js"},"level":0} {"tag":"dap.send","timestamp":1588425100873,"metadata":{"connectionId":1,"message":{"seq":139,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/workbench.desktop.main.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/workbench.desktop.main.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100873,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425100873,"metadata":{"connectionId":1,"message":{"seq":140,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js","path":"/Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js","sourceReference":1197516784}}}},"level":0} {"tag":"dap.send","timestamp":1588425100874,"metadata":{"connectionId":1,"message":{"seq":141,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_duplex.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_duplex.js","sourceReference":1610418787}}}},"level":0} {"tag":"dap.send","timestamp":1588425100874,"metadata":{"connectionId":1,"message":{"seq":142,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/state.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/streams/state.js","sourceReference":1209055043}}}},"level":0} {"tag":"dap.send","timestamp":1588425100874,"metadata":{"connectionId":1,"message":{"seq":143,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js","path":"/Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js","sourceReference":1734228416}}}},"level":0} {"tag":"dap.send","timestamp":1588425100874,"metadata":{"connectionId":1,"message":{"seq":144,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_transform.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_transform.js","sourceReference":1309939461}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100874,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_passthrough.js"},"level":0} {"tag":"dap.send","timestamp":1588425100875,"metadata":{"connectionId":1,"message":{"seq":145,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js","sourceReference":1023109111}}}},"level":0} {"tag":"dap.send","timestamp":1588425100875,"metadata":{"connectionId":1,"message":{"seq":146,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_passthrough.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/_stream_passthrough.js","sourceReference":1124723715}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100875,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100877,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100877,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100877,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/credentials/common/credentials.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/credentials/common/credentials.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/credentials/common/credentials.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/credentials/common/credentials.ts","sourceMapSources":["vs/platform/credentials/common/credentials.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100877,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/sig.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100878,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100878,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/credentials/node/credentialsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/credentials/node/credentialsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/credentials/node/credentialsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/credentials/node/credentialsService.ts","sourceMapSources":["vs/platform/credentials/node/credentialsService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100878,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100878,"metadata":{"connectionId":1,"message":{"seq":147,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js","path":"/Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js","sourceReference":1856379822}}}},"level":0} {"tag":"dap.send","timestamp":1588425100879,"metadata":{"connectionId":1,"message":{"seq":148,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js","sourceReference":1405191734}}}},"level":0} {"tag":"dap.send","timestamp":1588425100879,"metadata":{"connectionId":1,"message":{"seq":149,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/sig.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/sig.js","sourceReference":1750457209}}}},"level":0} {"tag":"dap.send","timestamp":1588425100879,"metadata":{"connectionId":1,"message":{"seq":150,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/credentials/common/credentials.ts","path":"/Users/roblou/code/vscode/src/vs/platform/credentials/common/credentials.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100879,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/hash.js"},"level":0} {"tag":"dap.send","timestamp":1588425100880,"metadata":{"connectionId":1,"message":{"seq":151,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/credentials/node/credentialsService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/credentials/node/credentialsService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100880,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100880,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/electron-browser/parts/titlebar/titlebarPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/parts/titlebar/titlebarPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/parts/titlebar/titlebarPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/electron-browser/parts/titlebar/titlebarPart.ts","sourceMapSources":["vs/workbench/electron-browser/parts/titlebar/titlebarPart.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100880,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100880,"metadata":{"connectionId":1,"message":{"seq":152,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js","sourceReference":1212964765}}}},"level":0} {"tag":"dap.send","timestamp":1588425100880,"metadata":{"connectionId":1,"message":{"seq":153,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/hash.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/hash.js","sourceReference":999896052}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/original-fs.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/certificate.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/read_file_context.js"},"level":0} {"tag":"dap.send","timestamp":1588425100882,"metadata":{"connectionId":1,"message":{"seq":154,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/parts/titlebar/titlebarPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/parts/titlebar/titlebarPart.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100883,"metadata":{"connectionId":1,"message":{"seq":155,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js","sourceReference":1016888373}}}},"level":0} {"tag":"dap.send","timestamp":1588425100883,"metadata":{"connectionId":1,"message":{"seq":156,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/original-fs.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/original-fs.js","sourceReference":130375181}}}},"level":0} {"tag":"dap.send","timestamp":1588425100884,"metadata":{"connectionId":1,"message":{"seq":157,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/certificate.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/crypto/certificate.js","sourceReference":1550595075}}}},"level":0} {"tag":"dap.send","timestamp":1588425100884,"metadata":{"connectionId":1,"message":{"seq":158,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/read_file_context.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/read_file_context.js","sourceReference":477896090}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100884,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100884,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/workbench.common.main.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/workbench.common.main.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/workbench.common.main.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/workbench.common.main.ts","sourceMapSources":["vs/workbench/workbench.common.main.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100885,"metadata":{"connectionId":1,"message":{"seq":159,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js","sourceReference":715915729}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100886,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100886,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100886,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/title/common/titleService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/title/common/titleService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/title/common/titleService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/title/common/titleService.ts","sourceMapSources":["vs/workbench/services/title/common/titleService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100886,"metadata":{"connectionId":1,"message":{"seq":160,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/workbench.common.main.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/workbench.common.main.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100887,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100887,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/electron-browser/desktop.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.contribution.ts","sourceMapSources":["vs/workbench/electron-browser/desktop.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100887,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100887,"metadata":{"connectionId":1,"message":{"seq":161,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/title/common/titleService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/title/common/titleService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100887,"metadata":{"connectionId":1,"message":{"seq":162,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100887,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100888,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/dialogs/electron-browser/fileDialogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/fileDialogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts","sourceMapSources":["vs/workbench/services/dialogs/electron-browser/fileDialogService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100888,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js"},"level":0} {"tag":"dap.send","timestamp":1588425100890,"metadata":{"connectionId":1,"message":{"seq":163,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js","sourceReference":1964264852}}}},"level":0} {"tag":"dap.send","timestamp":1588425100890,"metadata":{"connectionId":1,"message":{"seq":164,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js","sourceReference":418166747}}}},"level":0} {"tag":"dap.send","timestamp":1588425100890,"metadata":{"connectionId":1,"message":{"seq":165,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","path":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","sourceReference":429947999}}}},"level":0} {"tag":"dap.send","timestamp":1588425100895,"metadata":{"connectionId":1,"message":{"seq":166,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/integrity/node/integrityService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/node/integrityService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/integrity/node/integrityService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/integrity/node/integrityService.ts","sourceMapSources":["vs/workbench/services/integrity/node/integrityService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100895,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100900,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100901,"metadata":{"connectionId":1,"message":{"seq":167,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/integrity/node/integrityService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/integrity/node/integrityService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100901,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100902,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100902,"metadata":{"connectionId":1,"message":{"seq":168,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js","sourceReference":1823373286}}}},"level":0} {"tag":"dap.send","timestamp":1588425100902,"metadata":{"connectionId":1,"message":{"seq":169,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js","sourceReference":2100918548}}}},"level":0} {"tag":"dap.send","timestamp":1588425100902,"metadata":{"connectionId":1,"message":{"seq":170,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js","sourceReference":878799626}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100903,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100903,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/electron-browser/textMateService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService.ts","sourceMapSources":["vs/workbench/services/textMate/electron-browser/textMateService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100903,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100903,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/search/node/searchService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchService.ts","sourceMapSources":["vs/workbench/services/search/node/searchService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100903,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100904,"metadata":{"connectionId":1,"message":{"seq":171,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js","sourceReference":1721160653}}}},"level":0} {"tag":"dap.send","timestamp":1588425100904,"metadata":{"connectionId":1,"message":{"seq":172,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100904,"metadata":{"connectionId":1,"message":{"seq":173,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100905,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100905,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/electron-browser/desktop.main.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.main.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.main.ts","sourceMapSources":["vs/workbench/electron-browser/desktop.main.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100905,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100905,"metadata":{"connectionId":1,"message":{"seq":174,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js","sourceReference":162206617}}}},"level":0} {"tag":"dap.send","timestamp":1588425100906,"metadata":{"connectionId":1,"message":{"seq":175,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.main.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/desktop.main.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100906,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100906,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/electron-browser/nativeTextFileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts","sourceMapSources":["vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100906,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100907,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100907,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/dialogs/electron-browser/dialogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/dialogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts","sourceMapSources":["vs/workbench/services/dialogs/electron-browser/dialogService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100908,"metadata":{"connectionId":1,"message":{"seq":176,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100908,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100908,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/electron-browser/keybinding.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.ts","sourceMapSources":["vs/workbench/services/keybinding/electron-browser/keybinding.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100908,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100908,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/electron-browser/nativeKeymapService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.ts","sourceMapSources":["vs/workbench/services/keybinding/electron-browser/nativeKeymapService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100908,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100908,"metadata":{"connectionId":1,"message":{"seq":177,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js","sourceReference":9349163}}}},"level":0} {"tag":"dap.send","timestamp":1588425100909,"metadata":{"connectionId":1,"message":{"seq":178,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","sourceReference":23130216}}}},"level":0} {"tag":"dap.send","timestamp":1588425100909,"metadata":{"connectionId":1,"message":{"seq":179,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100909,"metadata":{"connectionId":1,"message":{"seq":180,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/keybinding.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100909,"metadata":{"connectionId":1,"message":{"seq":181,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/electron-browser/nativeKeymapService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100909,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100909,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/output/electron-browser/outputChannelModelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/electron-browser/outputChannelModelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/output/electron-browser/outputChannelModelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/output/electron-browser/outputChannelModelService.ts","sourceMapSources":["vs/workbench/services/output/electron-browser/outputChannelModelService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100909,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100910,"metadata":{"connectionId":1,"message":{"seq":182,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/output/electron-browser/outputChannelModelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/output/electron-browser/outputChannelModelService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100911,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100911,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts","sourceMapSources":["vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100911,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100911,"metadata":{"connectionId":1,"message":{"seq":183,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js","sourceReference":2107242433}}}},"level":0} {"tag":"dap.send","timestamp":1588425100911,"metadata":{"connectionId":1,"message":{"seq":184,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js","sourceReference":199087807}}}},"level":0} {"tag":"dap.send","timestamp":1588425100912,"metadata":{"connectionId":1,"message":{"seq":185,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100912,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100912,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/electron-browser/extensionService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionService.ts","sourceMapSources":["vs/workbench/services/extensions/electron-browser/extensionService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100912,"metadata":{"connectionId":1,"message":{"seq":186,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js","sourceReference":1009685872}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100913,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100913,"metadata":{"connectionId":1,"message":{"seq":187,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100913,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100913,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/telemetry/electron-browser/telemetryService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/telemetry/electron-browser/telemetryService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts","sourceMapSources":["vs/workbench/services/telemetry/electron-browser/telemetryService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100914,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100914,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100914,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/contextmenu/electron-browser/contextmenuService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts","sourceMapSources":["vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100914,"metadata":{"connectionId":1,"message":{"seq":188,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100914,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425100915,"metadata":{"connectionId":1,"message":{"seq":189,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js","sourceReference":927885443}}}},"level":0} {"tag":"dap.send","timestamp":1588425100915,"metadata":{"connectionId":1,"message":{"seq":190,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js","sourceReference":1391542899}}}},"level":0} {"tag":"dap.send","timestamp":1588425100916,"metadata":{"connectionId":1,"message":{"seq":191,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100916,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100916,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts","sourceMapSources":["vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100917,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100919,"metadata":{"connectionId":1,"message":{"seq":192,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100919,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100920,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100920,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.ts","sourceMapSources":["vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100920,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100920,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/accessibility/electron-browser/accessibilityService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/accessibility/electron-browser/accessibilityService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/accessibility/electron-browser/accessibilityService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/accessibility/electron-browser/accessibilityService.ts","sourceMapSources":["vs/workbench/services/accessibility/electron-browser/accessibilityService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100920,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100921,"metadata":{"connectionId":1,"message":{"seq":193,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionTipsService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100921,"metadata":{"connectionId":1,"message":{"seq":194,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/accessibility/electron-browser/accessibilityService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/accessibility/electron-browser/accessibilityService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100922,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100922,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.ts","sourceMapSources":["vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100922,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100922,"metadata":{"connectionId":1,"message":{"seq":195,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.js","sourceReference":374711379}}}},"level":0} {"tag":"dap.send","timestamp":1588425100922,"metadata":{"connectionId":1,"message":{"seq":196,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js","sourceReference":77648142}}}},"level":0} {"tag":"dap.send","timestamp":1588425100922,"metadata":{"connectionId":1,"message":{"seq":197,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js","sourceReference":1402569763}}}},"level":0} {"tag":"dap.send","timestamp":1588425100922,"metadata":{"connectionId":1,"message":{"seq":198,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js","sourceReference":1336567939}}}},"level":0} {"tag":"dap.send","timestamp":1588425100923,"metadata":{"connectionId":1,"message":{"seq":199,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100923,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100923,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionManagement/node/extensionManagementService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/node/extensionManagementService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/node/extensionManagementService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/node/extensionManagementService.ts","sourceMapSources":["vs/workbench/services/extensionManagement/node/extensionManagementService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100923,"metadata":{"connectionId":1,"message":{"seq":200,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js","sourceReference":1703471441}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100924,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100925,"metadata":{"connectionId":1,"message":{"seq":201,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/node/extensionManagementService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/node/extensionManagementService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100925,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100925,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/url/electron-browser/urlService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/url/electron-browser/urlService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/url/electron-browser/urlService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/url/electron-browser/urlService.ts","sourceMapSources":["vs/workbench/services/url/electron-browser/urlService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100925,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100925,"metadata":{"connectionId":1,"message":{"seq":202,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/url/electron-browser/urlService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/url/electron-browser/urlService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100925,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100925,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/node/tunnelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/node/tunnelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/node/tunnelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/node/tunnelService.ts","sourceMapSources":["vs/workbench/services/remote/node/tunnelService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100926,"metadata":{"connectionId":1,"message":{"seq":203,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js","sourceReference":220849036}}}},"level":0} {"tag":"dap.send","timestamp":1588425100926,"metadata":{"connectionId":1,"message":{"seq":204,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js","sourceReference":1462567373}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100927,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100927,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workspaces/electron-browser/workspacesService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspacesService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspacesService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspacesService.ts","sourceMapSources":["vs/workbench/services/workspaces/electron-browser/workspacesService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100927,"metadata":{"connectionId":1,"message":{"seq":205,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/node/tunnelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/node/tunnelService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100927,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100929,"metadata":{"connectionId":1,"message":{"seq":206,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspacesService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspacesService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100929,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100929,"metadata":{"connectionId":1,"message":{"seq":207,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js","sourceReference":961930022}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100929,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100929,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/backup/node/backupFileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/node/backupFileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/node/backupFileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/backup/node/backupFileService.ts","sourceMapSources":["vs/workbench/services/backup/node/backupFileService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100930,"metadata":{"connectionId":1,"message":{"seq":208,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/node/backupFileService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/node/backupFileService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100930,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100930,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.ts","sourceMapSources":["vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100930,"metadata":{"connectionId":1,"message":{"seq":209,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js","sourceReference":2086695725}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100930,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100931,"metadata":{"connectionId":1,"message":{"seq":210,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/storageKeysSyncRegistryService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100931,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100931,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.ts","sourceMapSources":["vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100935,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100936,"metadata":{"connectionId":1,"message":{"seq":211,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100936,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100936,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/authentication/electron-browser/authenticationTokenService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/electron-browser/authenticationTokenService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/authentication/electron-browser/authenticationTokenService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/authentication/electron-browser/authenticationTokenService.ts","sourceMapSources":["vs/workbench/services/authentication/electron-browser/authenticationTokenService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100936,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100936,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100937,"metadata":{"connectionId":1,"message":{"seq":212,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js","sourceReference":1637166542}}}},"level":0} {"tag":"dap.send","timestamp":1588425100937,"metadata":{"connectionId":1,"message":{"seq":213,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js","sourceReference":1629373302}}}},"level":0} {"tag":"dap.send","timestamp":1588425100937,"metadata":{"connectionId":1,"message":{"seq":214,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/authentication/electron-browser/authenticationTokenService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/authentication/electron-browser/authenticationTokenService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100937,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100938,"metadata":{"connectionId":1,"message":{"seq":215,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js","sourceReference":1577551235}}}},"level":0} {"tag":"dap.send","timestamp":1588425100938,"metadata":{"connectionId":1,"message":{"seq":216,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js","sourceReference":2088946439}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100939,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100939,"metadata":{"connectionId":1,"message":{"seq":217,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js","sourceReference":981032127}}}},"level":0} {"tag":"dap.send","timestamp":1588425100940,"metadata":{"connectionId":1,"message":{"seq":218,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js","sourceReference":270426005}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100945,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100945,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100945,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100945,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100946,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100946,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/authentication/browser/authenticationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/authentication/browser/authenticationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/authentication/browser/authenticationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/authentication/browser/authenticationService.ts","sourceMapSources":["vs/workbench/services/authentication/browser/authenticationService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100946,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100946,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/request/electron-browser/requestService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/request/electron-browser/requestService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/request/electron-browser/requestService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/request/electron-browser/requestService.ts","sourceMapSources":["vs/workbench/services/request/electron-browser/requestService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100946,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100946,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts","sourceMapSources":["vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100946,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100947,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100947,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100947,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workspaces/electron-browser/workspaceEditingService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.ts","sourceMapSources":["vs/workbench/services/workspaces/electron-browser/workspaceEditingService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100947,"metadata":{"connectionId":1,"message":{"seq":219,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/authentication/browser/authenticationService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/authentication/browser/authenticationService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100947,"metadata":{"connectionId":1,"message":{"seq":220,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/request/electron-browser/requestService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/request/electron-browser/requestService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100947,"metadata":{"connectionId":1,"message":{"seq":221,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":222,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js","sourceReference":1308774219}}}},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":223,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js","sourceReference":616161088}}}},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":224,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js","sourceReference":871346272}}}},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":225,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js","sourceReference":383429342}}}},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":226,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js","sourceReference":1700952737}}}},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":227,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js","sourceReference":1664763476}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100948,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100948,"metadata":{"connectionId":1,"message":{"seq":228,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspaceEditingService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100949,"metadata":{"connectionId":1,"message":{"seq":229,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js","sourceReference":1045835952}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100954,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100954,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100955,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100955,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100955,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/electron/electron-browser/electronService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/electron/electron-browser/electronService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/electron/electron-browser/electronService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/electron/electron-browser/electronService.ts","sourceMapSources":["vs/workbench/services/electron/electron-browser/electronService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100955,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100955,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100955,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/host/electron-browser/desktopHostService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/host/electron-browser/desktopHostService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/host/electron-browser/desktopHostService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/host/electron-browser/desktopHostService.ts","sourceMapSources":["vs/workbench/services/host/electron-browser/desktopHostService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100956,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100956,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/update/electron-browser/updateService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/update/electron-browser/updateService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/update/electron-browser/updateService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/update/electron-browser/updateService.ts","sourceMapSources":["vs/workbench/services/update/electron-browser/updateService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100956,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100956,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/lifecycle/electron-browser/lifecycleService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/lifecycle/electron-browser/lifecycleService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/lifecycle/electron-browser/lifecycleService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/lifecycle/electron-browser/lifecycleService.ts","sourceMapSources":["vs/workbench/services/lifecycle/electron-browser/lifecycleService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100956,"metadata":{"connectionId":1,"message":{"seq":230,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/electron/electron-browser/electronService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/electron/electron-browser/electronService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100956,"metadata":{"connectionId":1,"message":{"seq":231,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/host/electron-browser/desktopHostService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/host/electron-browser/desktopHostService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100956,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100957,"metadata":{"connectionId":1,"message":{"seq":232,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js","sourceReference":1927601305}}}},"level":0} {"tag":"dap.send","timestamp":1588425100957,"metadata":{"connectionId":1,"message":{"seq":233,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js","sourceReference":793291128}}}},"level":0} {"tag":"dap.send","timestamp":1588425100957,"metadata":{"connectionId":1,"message":{"seq":234,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js","sourceReference":1949703687}}}},"level":0} {"tag":"dap.send","timestamp":1588425100957,"metadata":{"connectionId":1,"message":{"seq":235,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js","sourceReference":1209425468}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100958,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100958,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/localizations/electron-browser/localizationsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/localizations/electron-browser/localizationsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/localizations/electron-browser/localizationsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/localizations/electron-browser/localizationsService.ts","sourceMapSources":["vs/workbench/services/localizations/electron-browser/localizationsService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100958,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100958,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts","sourceMapSources":["vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100958,"metadata":{"connectionId":1,"message":{"seq":236,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/update/electron-browser/updateService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/update/electron-browser/updateService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100959,"metadata":{"connectionId":1,"message":{"seq":237,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/lifecycle/electron-browser/lifecycleService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/lifecycle/electron-browser/lifecycleService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100959,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100959,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/menubar/electron-browser/menubarService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/menubar/electron-browser/menubarService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/menubar/electron-browser/menubarService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/menubar/electron-browser/menubarService.ts","sourceMapSources":["vs/workbench/services/menubar/electron-browser/menubarService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100959,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100959,"metadata":{"connectionId":1,"message":{"seq":238,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js","sourceReference":63708786}}}},"level":0} {"tag":"dap.send","timestamp":1588425100960,"metadata":{"connectionId":1,"message":{"seq":239,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/localizations/electron-browser/localizationsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/localizations/electron-browser/localizationsService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100960,"metadata":{"connectionId":1,"message":{"seq":240,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js","sourceReference":1858798013}}}},"level":0} {"tag":"dap.send","timestamp":1588425100969,"metadata":{"connectionId":1,"message":{"seq":241,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100969,"metadata":{"connectionId":1,"message":{"seq":242,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/menubar/electron-browser/menubarService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/menubar/electron-browser/menubarService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100969,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100970,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100970,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100971,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100971,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100971,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/issue/electron-browser/issueService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/issue/electron-browser/issueService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/issue/electron-browser/issueService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/issue/electron-browser/issueService.ts","sourceMapSources":["vs/workbench/services/issue/electron-browser/issueService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100971,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100971,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/localizations/browser/localizations.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizations.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizations.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizations.contribution.ts","sourceMapSources":["vs/workbench/contrib/localizations/browser/localizations.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100971,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100971,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/clipboard/electron-browser/clipboardService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/clipboard/electron-browser/clipboardService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts","sourceMapSources":["vs/workbench/services/clipboard/electron-browser/clipboardService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100972,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100972,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts","sourceMapSources":["vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100972,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100972,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.ts","sourceMapSources":["vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100972,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100972,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/path/electron-browser/pathService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/path/electron-browser/pathService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/path/electron-browser/pathService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/path/electron-browser/pathService.ts","sourceMapSources":["vs/workbench/services/path/electron-browser/pathService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100972,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100973,"metadata":{"connectionId":1,"message":{"seq":243,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js","sourceReference":1467345502}}}},"level":0} {"tag":"dap.send","timestamp":1588425100973,"metadata":{"connectionId":1,"message":{"seq":244,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js","sourceReference":274455876}}}},"level":0} {"tag":"dap.send","timestamp":1588425100973,"metadata":{"connectionId":1,"message":{"seq":245,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js","sourceReference":2080341853}}}},"level":0} {"tag":"dap.send","timestamp":1588425100973,"metadata":{"connectionId":1,"message":{"seq":246,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js","sourceReference":1493882879}}}},"level":0} {"tag":"dap.send","timestamp":1588425100973,"metadata":{"connectionId":1,"message":{"seq":247,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/issue/electron-browser/issueService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/issue/electron-browser/issueService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100973,"metadata":{"connectionId":1,"message":{"seq":248,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizations.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizations.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100974,"metadata":{"connectionId":1,"message":{"seq":249,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100974,"metadata":{"connectionId":1,"message":{"seq":250,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100974,"metadata":{"connectionId":1,"message":{"seq":251,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100974,"metadata":{"connectionId":1,"message":{"seq":252,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/path/electron-browser/pathService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/path/electron-browser/pathService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100974,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100974,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tags/electron-browser/tags.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/tags.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/tags.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/tags.contribution.ts","sourceMapSources":["vs/workbench/contrib/tags/electron-browser/tags.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100975,"metadata":{"connectionId":1,"message":{"seq":253,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js","sourceReference":1323875430}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100976,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100976,"metadata":{"connectionId":1,"message":{"seq":254,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/tags.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/tags.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100977,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100977,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/logs/electron-browser/logs.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logs.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts","sourceMapSources":["vs/workbench/contrib/logs/electron-browser/logs.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100977,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100980,"metadata":{"connectionId":1,"message":{"seq":255,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100980,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100980,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/electron-browser/fileActions.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileActions.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileActions.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileActions.contribution.ts","sourceMapSources":["vs/workbench/contrib/files/electron-browser/fileActions.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100980,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100980,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/electron-browser/files.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/files.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/files.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/files.contribution.ts","sourceMapSources":["vs/workbench/contrib/files/electron-browser/files.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100980,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100981,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.ts","sourceMapSources":["vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100981,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100981,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100981,"metadata":{"connectionId":1,"message":{"seq":256,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js","sourceReference":1402718763}}}},"level":0} {"tag":"dap.send","timestamp":1588425100982,"metadata":{"connectionId":1,"message":{"seq":257,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js","sourceReference":476534547}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100982,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/backup/electron-browser/backup.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backup.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backup.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backup.contribution.ts","sourceMapSources":["vs/workbench/contrib/backup/electron-browser/backup.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100983,"metadata":{"connectionId":1,"message":{"seq":258,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileActions.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileActions.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100983,"metadata":{"connectionId":1,"message":{"seq":259,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/files.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/files.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100983,"metadata":{"connectionId":1,"message":{"seq":260,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/splash/electron-browser/partsSplash.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100983,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/node/debugHelperService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/node/debugHelperService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/node/debugHelperService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/node/debugHelperService.ts","sourceMapSources":["vs/workbench/contrib/debug/node/debugHelperService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100984,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100984,"metadata":{"connectionId":1,"message":{"seq":261,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js","sourceReference":828972605}}}},"level":0} {"tag":"dap.send","timestamp":1588425100984,"metadata":{"connectionId":1,"message":{"seq":262,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js","sourceReference":1037817482}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100985,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js"},"level":0} {"tag":"dap.send","timestamp":1588425100985,"metadata":{"connectionId":1,"message":{"seq":263,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backup.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backup.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100985,"metadata":{"connectionId":1,"message":{"seq":264,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/node/debugHelperService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/node/debugHelperService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100986,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100986,"metadata":{"connectionId":1,"message":{"seq":265,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js","sourceReference":269328014}}}},"level":0} {"tag":"dap.send","timestamp":1588425100986,"metadata":{"connectionId":1,"message":{"seq":266,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js","sourceReference":1499913563}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100986,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100986,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts","sourceMapSources":["vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100987,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100987,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts","sourceMapSources":["vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100987,"metadata":{"connectionId":1,"message":{"seq":267,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js","sourceReference":1370590006}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100988,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100988,"metadata":{"connectionId":1,"message":{"seq":268,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminal.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100988,"metadata":{"connectionId":1,"message":{"seq":269,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100988,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100989,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100989,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100989,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/electron-browser/remote.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/electron-browser/remote.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/electron-browser/remote.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/electron-browser/remote.contribution.ts","sourceMapSources":["vs/workbench/contrib/remote/electron-browser/remote.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100989,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100989,"metadata":{"connectionId":1,"message":{"seq":270,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100990,"metadata":{"connectionId":1,"message":{"seq":271,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/electron-browser/remote.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/electron-browser/remote.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100990,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100990,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/node/externalTerminalService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts","sourceMapSources":["vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100990,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100990,"metadata":{"connectionId":1,"message":{"seq":272,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js","sourceReference":1111337907}}}},"level":0} {"tag":"dap.send","timestamp":1588425100991,"metadata":{"connectionId":1,"message":{"seq":273,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js","sourceReference":1850857180}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100991,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100991,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.ts","sourceMapSources":["vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100991,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100991,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/electron-browser/webview.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webview.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts","sourceMapSources":["vs/workbench/contrib/webview/electron-browser/webview.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100991,"metadata":{"connectionId":1,"message":{"seq":274,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100992,"metadata":{"connectionId":1,"message":{"seq":275,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js","sourceReference":1054868472}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100992,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425100992,"metadata":{"connectionId":1,"message":{"seq":276,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100992,"metadata":{"connectionId":1,"message":{"seq":277,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100993,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100993,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100993,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/performance/electron-browser/performance.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/performance.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts","sourceMapSources":["vs/workbench/contrib/performance/electron-browser/performance.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100994,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100994,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100994,"metadata":{"connectionId":1,"message":{"seq":278,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js","sourceReference":1881169101}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100994,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js"},"level":0} {"tag":"dap.send","timestamp":1588425100994,"metadata":{"connectionId":1,"message":{"seq":279,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100994,"metadata":{"connectionId":1,"message":{"seq":280,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100994,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100995,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/cli/node/cli.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/cli/node/cli.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/cli/node/cli.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/cli/node/cli.contribution.ts","sourceMapSources":["vs/workbench/contrib/cli/node/cli.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100995,"metadata":{"connectionId":1,"message":{"seq":281,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js","sourceReference":884464985}}}},"level":0} {"tag":"dap.send","timestamp":1588425100995,"metadata":{"connectionId":1,"message":{"seq":282,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js","path":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js","sourceReference":1381569307}}}},"level":0} {"tag":"dap.send","timestamp":1588425100995,"metadata":{"connectionId":1,"message":{"seq":283,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/cli/node/cli.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/cli/node/cli.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100996,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100996,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/issue/electron-browser/issue.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts","sourceMapSources":["vs/workbench/contrib/issue/electron-browser/issue.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100997,"metadata":{"connectionId":1,"message":{"seq":284,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100997,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100997,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.ts","sourceMapSources":["vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425100997,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425100998,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/instantiation/common/extensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/extensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/extensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/instantiation/common/extensions.ts","sourceMapSources":["vs/platform/instantiation/common/extensions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425100998,"metadata":{"connectionId":1,"message":{"seq":285,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/themes/test/electron-browser/themes.test.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425100998,"metadata":{"connectionId":1,"message":{"seq":286,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/extensions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/extensions.ts","sourceReference":0}}}},"level":0} {"tag":"perf.function","timestamp":1588425100998,"message":"","metadata":{"method":"BreakpointsPredictor.createInitialMapping","duration":0},"level":0} {"tag":"cdp.send","timestamp":1588425100999,"metadata":{"connectionId":0,"message":{"id":19,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"8:beforeScriptWithSourceMapExecution"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425100999,"metadata":{"connectionId":1,"message":{"seq":287,"type":"response","request_seq":3,"command":"setExceptionBreakpoints","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101000,"metadata":{"connectionId":0,"message":{"id":19,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101001,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101001,"metadata":{"connectionId":1,"message":{"seq":288,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js","sourceReference":65206430}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101002,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101002,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.ts","sourceMapSources":["vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.ts"]},"level":0} {"tag":"cdp.send","timestamp":1588425101003,"metadata":{"connectionId":0,"message":{"id":20,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425101003,"metadata":{"connectionId":1,"message":{"command":"configurationDone","type":"request","seq":5}},"level":0} {"tag":"dap.send","timestamp":1588425101003,"metadata":{"connectionId":1,"message":{"seq":289,"type":"response","request_seq":5,"command":"configurationDone","success":true,"body":{}}},"level":0} {"tag":"perf.function","timestamp":1588425101003,"message":"","metadata":{"method":"BreakpointManager.launchBlocker","duration":0},"level":0} {"tag":"cdp.send","timestamp":1588425101003,"metadata":{"connectionId":0,"message":{"id":21,"method":"Runtime.runIfWaitingForDebugger","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425101003,"metadata":{"connectionId":1,"message":{"seq":290,"type":"response","request_seq":2,"command":"launch","success":true,"body":{}}},"level":0} {"tag":"dap.send","timestamp":1588425101004,"metadata":{"connectionId":1,"message":{"seq":291,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101004,"metadata":{"connectionId":0,"message":{"id":20,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425101006,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":6}},"level":0} {"tag":"dap.send","timestamp":1588425101006,"metadata":{"connectionId":1,"message":{"seq":292,"type":"response","request_seq":6,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101027,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"170","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"26bb7402aa58e9920f96f3e44e792f614e37988e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationExportHelper.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2637,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"171","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"376cd0fc93bedc5b6ad249dc02a1e0cb73a056e8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSync.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3970,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"172","url":"os.js","startLine":0,"startColumn":0,"endLine":303,"endColumn":0,"executionContextId":1,"hash":"0f1017ab382803cf429957551b39b4614a63507f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":7548,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"173","url":"/Users/roblou/code/vscode/node_modules/graceful-fs/graceful-fs.js","startLine":0,"startColumn":0,"endLine":347,"endColumn":66,"executionContextId":1,"hash":"020a835da98b0ec5164e0b9c88891ffe18a2c046","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":9036,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"174","url":"/Users/roblou/code/vscode/node_modules/graceful-fs/polyfills.js","startLine":0,"startColumn":0,"endLine":343,"endColumn":66,"executionContextId":1,"hash":"2f366fe47b041d0957393076612844dc68f73cff","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":9741,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"175","url":"constants.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":0,"executionContextId":1,"hash":"28e990d811eaeeb427088f526c34d2cd72d6df27","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1696,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"176","url":"/Users/roblou/code/vscode/node_modules/graceful-fs/legacy-streams.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":66,"executionContextId":1,"hash":"0fa0bda30d0d9f7f076d09658b6fd74b815ab28b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2877,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425101029,"metadata":{"connectionId":1,"message":{"seq":293,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"177","url":"/Users/roblou/code/vscode/node_modules/graceful-fs/clone.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":66,"executionContextId":1,"hash":"193143d01c110bf7494f3b3fc82b88e04fd988b0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":623,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"178","url":"internal/fs/streams.js","startLine":0,"startColumn":0,"endLine":406,"endColumn":0,"executionContextId":1,"hash":"3a46648b5f89d928773002e14e0cb674494de5cc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":10273,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"179","url":"/Users/roblou/code/vscode/node_modules/native-keymap/index.js","startLine":0,"startColumn":0,"endLine":66,"endColumn":66,"executionContextId":1,"hash":"1016e1b57d5dc40354840ca629f3741c8170f871","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1991,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"180","url":"net.js","startLine":0,"startColumn":0,"endLine":1666,"endColumn":0,"executionContextId":1,"hash":"0d783d07258cf9d2176bac0561db52cd00591535","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":44752,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"181","url":"internal/net.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":0,"executionContextId":1,"hash":"109669654e0e118770d8fb83400cd9566df582b7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2146,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"182","url":"internal/stream_base_commons.js","startLine":0,"startColumn":0,"endLine":245,"endColumn":0,"executionContextId":1,"hash":"0fd25d21464679e03b6eac7da78d5c840ed62570","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5822,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"183","url":"internal/dtrace.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":0,"executionContextId":1,"hash":"2e8fbf2f9f6aaa183be557d25f5fbc5b09fae00a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":568,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"184","url":"child_process.js","startLine":0,"startColumn":0,"endLine":715,"endColumn":0,"executionContextId":1,"hash":"02f4ebb8172e87c82c65cdfe6cc395cb46d6a916","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":19415,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"185","url":"internal/child_process.js","startLine":0,"startColumn":0,"endLine":1055,"endColumn":0,"executionContextId":1,"hash":"0cc4650f32cbc1ac5cd79f795d254b5a15537738","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":29768,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"186","url":"dgram.js","startLine":0,"startColumn":0,"endLine":974,"endColumn":0,"executionContextId":1,"hash":"0a5aeb5c0dc6e14536860904cd79f7b6608fd5f4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":24411,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"187","url":"internal/dgram.js","startLine":0,"startColumn":0,"endLine":81,"endColumn":0,"executionContextId":1,"hash":"142d0e04a078f72c2faa14fc6a1243a7059ed38a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1807,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"188","url":"internal/socket_list.js","startLine":0,"startColumn":0,"endLine":108,"endColumn":0,"executionContextId":1,"hash":"020ea913146d0c8328430b25cd0f753c6c438088","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2705,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"189","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"1ac49e5e7c7affcd582c2ac2af60d17e151dcc78","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskService.js.map","hasSourceURL":false,"isModule":false,"length":6804,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101031,"metadata":{"connectionId":0,"message":{"id":21,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101031,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101033,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101034,"metadata":{"connectionId":1,"message":{"seq":294,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js","sourceReference":1151714584}}}},"level":0} {"tag":"dap.send","timestamp":1588425101035,"metadata":{"connectionId":1,"message":{"seq":295,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js","sourceReference":986773565}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101037,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/graceful-fs/graceful-fs.js","absolutePath":"/Users/roblou/code/vscode/node_modules/graceful-fs/graceful-fs.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101040,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101040,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.ts","sourceMapSources":["vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101040,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/graceful-fs/polyfills.js","absolutePath":"/Users/roblou/code/vscode/node_modules/graceful-fs/polyfills.js"},"level":0} {"tag":"dap.send","timestamp":1588425101043,"metadata":{"connectionId":1,"message":{"seq":296,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/graceful-fs/graceful-fs.js","path":"/Users/roblou/code/vscode/node_modules/graceful-fs/graceful-fs.js","sourceReference":1455746084}}}},"level":0} {"tag":"dap.send","timestamp":1588425101043,"metadata":{"connectionId":1,"message":{"seq":297,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/graceful-fs/polyfills.js","path":"/Users/roblou/code/vscode/node_modules/graceful-fs/polyfills.js","sourceReference":773827999}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101043,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101043,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts","sourceMapSources":["vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101043,"metadata":{"connectionId":1,"message":{"seq":298,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101044,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"190","url":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js","startLine":0,"startColumn":0,"endLine":2,"endColumn":66,"executionContextId":1,"hash":"1cf6a66188799c5e1808ca5486fec0b13e1eccac","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VtdmVyL3NlbXZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsImEiLCJpIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJkZWJ1ZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0RFQlVHIiwidGVzdCIsImFyZ3MiLCJBcnJheSIsInNsaWNlIiwiYXJndW1lbnRzIiwidW5zaGlmdCIsImNvbnNvbGUiLCJsb2ciLCJhcHBseSIsIlNFTVZFUl9TUEVDX1ZFUlNJT04iLCJNQVhfTEVOR1RIIiwiTUFYX1NBRkVfSU5URUdFUiIsIk51bWJlciIsInJlIiwic3JjIiwiUiIsIk5VTUVSSUNJREVOVElGSUVSIiwiTlVNRVJJQ0lERU5USUZJRVJMT09TRSIsIk5PTk5VTUVSSUNJREVOVElGSUVSIiwiTUFJTlZFUlNJT04iLCJNQUlOVkVSU0lPTkxPT1NFIiwiUFJFUkVMRUFTRUlERU5USUZJRVIiLCJQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFIiwiUFJFUkVMRUFTRSIsIlBSRVJFTEVBU0VMT09TRSIsIkJVSUxESURFTlRJRklFUiIsIkJVSUxEIiwiRlVMTCIsIkZVTExQTEFJTiIsIkxPT1NFUExBSU4iLCJMT09TRSIsIkdUTFQiLCJYUkFOR0VJREVOVElGSUVSTE9PU0UiLCJYUkFOR0VJREVOVElGSUVSIiwiWFJBTkdFUExBSU4iLCJYUkFOR0VQTEFJTkxPT1NFIiwiWFJBTkdFIiwiWFJBTkdFTE9PU0UiLCJDT0VSQ0UiLCJMT05FVElMREUiLCJUSUxERVRSSU0iLCJSZWdFeHAiLCJUSUxERSIsIlRJTERFTE9PU0UiLCJMT05FQ0FSRVQiLCJDQVJFVFRSSU0iLCJDQVJFVCIsIkNBUkVUTE9PU0UiLCJDT01QQVJBVE9STE9PU0UiLCJDT01QQVJBVE9SIiwiQ09NUEFSQVRPUlRSSU0iLCJIWVBIRU5SQU5HRSIsIkhZUEhFTlJBTkdFTE9PU0UiLCJTVEFSIiwicGFyc2UiLCJ2ZXJzaW9uIiwibG9vc2UiLCJTZW1WZXIiLCJsZW5ndGgiLCJlciIsIlR5cGVFcnJvciIsInRyaW0iLCJtYXRjaCIsInJhdyIsIm1ham9yIiwibWlub3IiLCJwYXRjaCIsInByZXJlbGVhc2UiLCJzcGxpdCIsIm1hcCIsImlkIiwibnVtIiwiYnVpbGQiLCJmb3JtYXQiLCJ2YWxpZCIsInYiLCJjbGVhbiIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb21wYXJlIiwib3RoZXIiLCJjb21wYXJlTWFpbiIsImNvbXBhcmVQcmUiLCJjb21wYXJlSWRlbnRpZmllcnMiLCJiIiwidW5kZWZpbmVkIiwiaW5jIiwicmVsZWFzZSIsImlkZW50aWZpZXIiLCJwdXNoIiwiaXNOYU4iLCJFcnJvciIsImRpZmYiLCJ2ZXJzaW9uMSIsInZlcnNpb24yIiwiZXEiLCJ2MSIsInYyIiwibnVtZXJpYyIsImFudW0iLCJibnVtIiwiZ3QiLCJsdCIsIm5lcSIsImd0ZSIsImx0ZSIsImNtcCIsIm9wIiwicmV0IiwiQ29tcGFyYXRvciIsImNvbXAiLCJzZW12ZXIiLCJBTlkiLCJvcGVyYXRvciIsInJjb21wYXJlSWRlbnRpZmllcnMiLCJjb21wYXJlTG9vc2UiLCJyY29tcGFyZSIsInNvcnQiLCJsaXN0IiwicnNvcnQiLCJSYW5nZSIsInJhbmdlIiwic2V0IiwicGFyc2VSYW5nZSIsImZpbHRlciIsImlzWCIsInRvTG93ZXJDYXNlIiwiaHlwaGVuUmVwbGFjZSIsIiQwIiwiZnJvbSIsImZNIiwiZm0iLCJmcCIsImZwciIsImZiIiwidG8iLCJ0TSIsInRtIiwidHAiLCJ0cHIiLCJ0YiIsInRlc3RTZXQiLCJhbGxvd2VkIiwic2F0aXNmaWVzIiwib3V0c2lkZSIsImhpbG8iLCJndGZuIiwibHRlZm4iLCJsdGZuIiwiZWNvbXAiLCJjb21wYXJhdG9ycyIsImhpZ2giLCJsb3ciLCJmb3JFYWNoIiwiY29tcGFyYXRvciIsImludGVyc2VjdHMiLCJyYW5nZVRtcCIsInNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIiwic2FtZURpcmVjdGlvbkRlY3JlYXNpbmciLCJzYW1lU2VtVmVyIiwiZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSIsIm9wcG9zaXRlRGlyZWN0aW9uc0xlc3NUaGFuIiwib3Bwb3NpdGVEaXJlY3Rpb25zR3JlYXRlclRoYW4iLCJjb21wcyIsImhyIiwiY29tcFJlIiwiXyIsIk0iLCJwciIsImNoYXJBdCIsInJlcGxhY2VDYXJldCIsInJlcGxhY2VDYXJldHMiLCJyZXBsYWNlVGlsZGUiLCJyZXBsYWNlVGlsZGVzIiwiZ3RsdCIsInhNIiwieG0iLCJ4cCIsInJlcGxhY2VYUmFuZ2UiLCJyZXBsYWNlWFJhbmdlcyIsInJlcGxhY2VTdGFycyIsInBhcnNlQ29tcGFyYXRvciIsInNvbWUiLCJ0aGlzQ29tcGFyYXRvcnMiLCJldmVyeSIsInRoaXNDb21wYXJhdG9yIiwicmFuZ2VDb21wYXJhdG9ycyIsInJhbmdlQ29tcGFyYXRvciIsInRvQ29tcGFyYXRvcnMiLCJtYXhTYXRpc2Z5aW5nIiwidmVyc2lvbnMiLCJtYXgiLCJtYXhTViIsInJhbmdlT2JqIiwibWluU2F0aXNmeWluZyIsIm1pbiIsIm1pblNWIiwidmFsaWRSYW5nZSIsImx0ciIsImd0ciIsInBhcnNlZCIsInIxIiwicjIiLCJjb2VyY2UiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImUiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImNvbmNhdCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibGVuIiwicnVuIiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsImFycmF5Iiwibm9vcCIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiYXJndiIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDaEQsR0FBc0IsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsU0FDYixHQUFxQixtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILE9BQ1AsQ0FDSixJQUFJSyxFQUFJTCxJQUNSLElBQUksSUFBSU0sS0FBS0QsR0FBdUIsaUJBQVpKLFFBQXVCQSxRQUFVRixHQUFNTyxHQUFLRCxFQUFFQyxJQVB4RSxDQVNtQixvQkFBVEMsS0FBdUJBLEtBQU9DLE1BQU0sV0FDOUMsTyxZQ1RFLElBQUlDLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FB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QUFVN0MsR0FHaENnUSxFQUFNN0gsS0FBSyxJQUFJd0ksRUFBS2hCLEVBQUtqTixJQUNKLElBQWpCc04sRUFBTTdKLFFBQWlCOEosR0FDdkJQLEVBQVdXLElBU25CTSxFQUFLMU8sVUFBVXVPLElBQU0sV0FDakJ0USxLQUFLeVAsSUFBSTFNLE1BQU0sS0FBTS9DLEtBQUswUSxRQUU5QnRPLEVBQVF5TyxNQUFRLFVBQ2hCek8sRUFBUTBPLFNBQVUsRUFDbEIxTyxFQUFRQyxJQUFNLEdBQ2RELEVBQVEyTyxLQUFPLEdBQ2YzTyxFQUFRMEQsUUFBVSxHQUNsQjFELEVBQVFrTSxTQUFXLEdBSW5CbE0sRUFBUTRPLEdBQUtMLEVBQ2J2TyxFQUFRNk8sWUFBY04sRUFDdEJ2TyxFQUFROE8sS0FBT1AsRUFDZnZPLEVBQVErTyxJQUFNUixFQUNkdk8sRUFBUWdQLGVBQWlCVCxFQUN6QnZPLEVBQVFpUCxtQkFBcUJWLEVBQzdCdk8sRUFBUWtQLEtBQU9YLEVBQ2Z2TyxFQUFRbVAsZ0JBQWtCWixFQUMxQnZPLEVBQVFvUCxvQkFBc0JiLEVBRTlCdk8sRUFBUXFQLFVBQVksU0FBVS9RLEdBQVEsTUFBTyxJQUU3QzBCLEVBQVFzUCxRQUFVLFNBQVVoUixHQUN4QixNQUFNLElBQUl5SCxNQUFNLHFDQUdwQi9GLEVBQVF1UCxJQUFNLFdBQWMsTUFBTyxLQUNuQ3ZQLEVBQVF3UCxNQUFRLFNBQVVDLEdBQ3RCLE1BQU0sSUFBSTFKLE1BQU0sbUNBRXBCL0YsRUFBUTBQLE1BQVEsV0FBYSxPQUFPIiwiZmlsZSI6InNlbXZlci11bWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IFNlbVZlcjtcblxuLy8gVGhlIGRlYnVnIGZ1bmN0aW9uIGlzIGV4Y2x1ZGVkIGVudGlyZWx5IGZyb20gdGhlIG1pbmlmaWVkIHZlcnNpb24uXG4vKiBub21pbiAqLyB2YXIgZGVidWc7XG4vKiBub21pbiAqLyBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmXG4gICAgLyogbm9taW4gKi8gcHJvY2Vzcy5lbnYgJiZcbiAgICAvKiBub21pbiAqLyBwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmXG4gICAgLyogbm9taW4gKi8gL1xcYnNlbXZlclxcYi9pLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRykpXG4gIC8qIG5vbWluICovIGRlYnVnID0gZnVuY3Rpb24oKSB7XG4gICAgLyogbm9taW4gKi8gdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIC8qIG5vbWluICovIGFyZ3MudW5zaGlmdCgnU0VNVkVSJyk7XG4gICAgLyogbm9taW4gKi8gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gICAgLyogbm9taW4gKi8gfTtcbi8qIG5vbWluICovIGVsc2VcbiAgLyogbm9taW4gKi8gZGVidWcgPSBmdW5jdGlvbigpIHt9O1xuXG4vLyBOb3RlOiB0aGlzIGlzIHRoZSBzZW12ZXIub3JnIHZlcnNpb24gb2YgdGhlIHNwZWMgdGhhdCBpdCBpbXBsZW1lbnRzXG4vLyBOb3QgbmVjZXNzYXJpbHkgdGhlIHBhY2thZ2UgdmVyc2lvbiBvZiB0aGlzIGNvZGUuXG5leHBvcnRzLlNFTVZFUl9TUEVDX1ZFUlNJT04gPSAnMi4wLjAnO1xuXG52YXIgTUFYX0xFTkdUSCA9IDI1NjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgOTAwNzE5OTI1NDc0MDk5MTtcblxuLy8gTWF4IHNhZmUgc2VnbWVudCBsZW5ndGggZm9yIGNvZXJjaW9uLlxudmFyIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggPSAxNjtcblxuLy8gVGhlIGFjdHVhbCByZWdleHBzIGdvIG9uIGV4cG9ydHMucmVcbnZhciByZSA9IGV4cG9ydHMucmUgPSBbXTtcbnZhciBzcmMgPSBleHBvcnRzLnNyYyA9IFtdO1xudmFyIFIgPSAwO1xuXG4vLyBUaGUgZm9sbG93aW5nIFJlZ3VsYXIgRXhwcmVzc2lvbnMgY2FuIGJlIHVzZWQgZm9yIHRva2VuaXppbmcsXG4vLyB2YWxpZGF0aW5nLCBhbmQgcGFyc2luZyBTZW1WZXIgdmVyc2lvbiBzdHJpbmdzLlxuXG4vLyAjIyBOdW1lcmljIElkZW50aWZpZXJcbi8vIEEgc2luZ2xlIGAwYCwgb3IgYSBub24temVybyBkaWdpdCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgZGlnaXRzLlxuXG52YXIgTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJdID0gJzB8WzEtOV1cXFxcZConO1xudmFyIE5VTUVSSUNJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gPSAnWzAtOV0rJztcblxuXG4vLyAjIyBOb24tbnVtZXJpYyBJZGVudGlmaWVyXG4vLyBaZXJvIG9yIG1vcmUgZGlnaXRzLCBmb2xsb3dlZCBieSBhIGxldHRlciBvciBoeXBoZW4sIGFuZCB0aGVuIHplcm8gb3Jcbi8vIG1vcmUgbGV0dGVycywgZGlnaXRzLCBvciBoeXBoZW5zLlxuXG52YXIgTk9OTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTk9OTlVNRVJJQ0lERU5USUZJRVJdID0gJ1xcXFxkKlthLXpBLVotXVthLXpBLVowLTktXSonO1xuXG5cbi8vICMjIE1haW4gVmVyc2lvblxuLy8gVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuXG52YXIgTUFJTlZFUlNJT04gPSBSKys7XG5zcmNbTUFJTlZFUlNJT05dID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSXSArICcpXFxcXC4nICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICcoJyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBNQUlOVkVSU0lPTkxPT1NFID0gUisrO1xuc3JjW01BSU5WRVJTSU9OTE9PU0VdID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJyknO1xuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uIElkZW50aWZpZXJcbi8vIEEgbnVtZXJpYyBpZGVudGlmaWVyLCBvciBhIG5vbi1udW1lcmljIGlkZW50aWZpZXIuXG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUiA9IFIrKztcbnNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gPSAnKD86JyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd8JyArIHNyY1tOT05OVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdID0gJyg/OicgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgc3JjW05PTk5VTUVSSUNJREVOVElGSUVSXSArICcpJztcblxuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uXG4vLyBIeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvblxuLy8gaWRlbnRpZmllcnMuXG5cbnZhciBQUkVSRUxFQVNFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VdID0gJyg/Oi0oJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gKyAnKSopKSc7XG5cbnZhciBQUkVSRUxFQVNFTE9PU0UgPSBSKys7XG5zcmNbUFJFUkVMRUFTRUxPT1NFXSA9ICcoPzotPygnICsgc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdICtcbiAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXSArICcpKikpJztcblxuLy8gIyMgQnVpbGQgTWV0YWRhdGEgSWRlbnRpZmllclxuLy8gQW55IGNvbWJpbmF0aW9uIG9mIGRpZ2l0cywgbGV0dGVycywgb3IgaHlwaGVucy5cblxudmFyIEJVSUxESURFTlRJRklFUiA9IFIrKztcbnNyY1tCVUlMRElERU5USUZJRVJdID0gJ1swLTlBLVphLXotXSsnO1xuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YVxuLy8gUGx1cyBzaWduLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwZXJpb2Qtc2VwYXJhdGVkIGJ1aWxkIG1ldGFkYXRhXG4vLyBpZGVudGlmaWVycy5cblxudmFyIEJVSUxEID0gUisrO1xuc3JjW0JVSUxEXSA9ICcoPzpcXFxcKygnICsgc3JjW0JVSUxESURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICcoPzpcXFxcLicgKyBzcmNbQlVJTERJREVOVElGSUVSXSArICcpKikpJztcblxuXG4vLyAjIyBGdWxsIFZlcnNpb24gU3RyaW5nXG4vLyBBIG1haW4gdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kXG4vLyBidWlsZCBtZXRhZGF0YS5cblxuLy8gTm90ZSB0aGF0IHRoZSBvbmx5IG1ham9yLCBtaW5vciwgcGF0Y2gsIGFuZCBwcmUtcmVsZWFzZSBzZWN0aW9ucyBvZlxuLy8gdGhlIHZlcnNpb24gc3RyaW5nIGFyZSBjYXB0dXJpbmcgZ3JvdXBzLiAgVGhlIGJ1aWxkIG1ldGFkYXRhIGlzIG5vdCBhXG4vLyBjYXB0dXJpbmcgZ3JvdXAsIGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBldmVyIGJlIHVzZWQgaW4gdmVyc2lvblxuLy8gY29tcGFyaXNvbi5cblxudmFyIEZVTEwgPSBSKys7XG52YXIgRlVMTFBMQUlOID0gJ3Y/JyArIHNyY1tNQUlOVkVSU0lPTl0gK1xuICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFXSArICc/JyArXG4gICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/Jztcblxuc3JjW0ZVTExdID0gJ14nICsgRlVMTFBMQUlOICsgJyQnO1xuXG4vLyBsaWtlIGZ1bGwsIGJ1dCBhbGxvd3MgdjEuMi4zIGFuZCA9MS4yLjMsIHdoaWNoIHBlb3BsZSBkbyBzb21ldGltZXMuXG4vLyBhbHNvLCAxLjAuMGFscGhhMSAocHJlcmVsZWFzZSB3aXRob3V0IHRoZSBoeXBoZW4pIHdoaWNoIGlzIHByZXR0eVxuLy8gY29tbW9uIGluIHRoZSBucG0gcmVnaXN0cnkuXG52YXIgTE9PU0VQTEFJTiA9ICdbdj1cXFxcc10qJyArIHNyY1tNQUlOVkVSU0lPTkxPT1NFXSArXG4gICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/JztcblxudmFyIExPT1NFID0gUisrO1xuc3JjW0xPT1NFXSA9ICdeJyArIExPT1NFUExBSU4gKyAnJCc7XG5cbnZhciBHVExUID0gUisrO1xuc3JjW0dUTFRdID0gJygoPzo8fD4pPz0/KSc7XG5cbi8vIFNvbWV0aGluZyBsaWtlIFwiMi4qXCIgb3IgXCIxLjIueFwiLlxuLy8gTm90ZSB0aGF0IFwieC54XCIgaXMgYSB2YWxpZCB4UmFuZ2UgaWRlbnRpZmVyLCBtZWFuaW5nIFwiYW55IHZlcnNpb25cIlxuLy8gT25seSB0aGUgZmlyc3QgaXRlbSBpcyBzdHJpY3RseSByZXF1aXJlZC5cbnZhciBYUkFOR0VJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSA9IHNyY1tOVU1FUklDSURFTlRJRklFUkxPT1NFXSArICd8eHxYfFxcXFwqJztcbnZhciBYUkFOR0VJREVOVElGSUVSID0gUisrO1xuc3JjW1hSQU5HRUlERU5USUZJRVJdID0gc3JjW05VTUVSSUNJREVOVElGSUVSXSArICd8eHxYfFxcXFwqJztcblxudmFyIFhSQU5HRVBMQUlOID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOXSA9ICdbdj1cXFxcc10qKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUl0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnKD86XFxcXC4oJyArIHNyY1tYUkFOR0VJREVOVElGSUVSXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJyg/OicgKyBzcmNbUFJFUkVMRUFTRV0gKyAnKT8nICtcbiAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAnKT8pPyc7XG5cbnZhciBYUkFOR0VQTEFJTkxPT1NFID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOTE9PU0VdID0gJ1t2PVxcXFxzXSooJyArIHNyY1tYUkFOR0VJREVOVElGSUVSTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJMT09TRV0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKD86JyArIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJyk/JyArXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcpPyk/JztcblxudmFyIFhSQU5HRSA9IFIrKztcbnNyY1tYUkFOR0VdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKicgKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFhSQU5HRUxPT1NFID0gUisrO1xuc3JjW1hSQU5HRUxPT1NFXSA9ICdeJyArIHNyY1tHVExUXSArICdcXFxccyonICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyQnO1xuXG4vLyBDb2VyY2lvbi5cbi8vIEV4dHJhY3QgYW55dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSBhIHBhcnQgb2YgYSB2YWxpZCBzZW12ZXJcbnZhciBDT0VSQ0UgPSBSKys7XG5zcmNbQ09FUkNFXSA9ICcoPzpefFteXFxcXGRdKScgK1xuICAgICAgICAgICAgICAnKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSknICtcbiAgICAgICAgICAgICAgJyg/OlxcXFwuKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSkpPycgK1xuICAgICAgICAgICAgICAnKD86XFxcXC4oXFxcXGR7MSwnICsgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSCArICd9KSk/JyArXG4gICAgICAgICAgICAgICcoPzokfFteXFxcXGRdKSc7XG5cbi8vIFRpbGRlIHJhbmdlcy5cbi8vIE1lYW5pbmcgaXMgXCJyZWFzb25hYmx5IGF0IG9yIGdyZWF0ZXIgdGhhblwiXG52YXIgTE9ORVRJTERFID0gUisrO1xuc3JjW0xPTkVUSUxERV0gPSAnKD86fj4/KSc7XG5cbnZhciBUSUxERVRSSU0gPSBSKys7XG5zcmNbVElMREVUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbTE9ORVRJTERFXSArICdcXFxccysnO1xucmVbVElMREVUUklNXSA9IG5ldyBSZWdFeHAoc3JjW1RJTERFVFJJTV0sICdnJyk7XG52YXIgdGlsZGVUcmltUmVwbGFjZSA9ICckMX4nO1xuXG52YXIgVElMREUgPSBSKys7XG5zcmNbVElMREVdID0gJ14nICsgc3JjW0xPTkVUSUxERV0gKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFRJTERFTE9PU0UgPSBSKys7XG5zcmNbVElMREVMT09TRV0gPSAnXicgKyBzcmNbTE9ORVRJTERFXSArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICckJztcblxuLy8gQ2FyZXQgcmFuZ2VzLlxuLy8gTWVhbmluZyBpcyBcImF0IGxlYXN0IGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoXCJcbnZhciBMT05FQ0FSRVQgPSBSKys7XG5zcmNbTE9ORUNBUkVUXSA9ICcoPzpcXFxcXiknO1xuXG52YXIgQ0FSRVRUUklNID0gUisrO1xuc3JjW0NBUkVUVFJJTV0gPSAnKFxcXFxzKiknICsgc3JjW0xPTkVDQVJFVF0gKyAnXFxcXHMrJztcbnJlW0NBUkVUVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDQVJFVFRSSU1dLCAnZycpO1xudmFyIGNhcmV0VHJpbVJlcGxhY2UgPSAnJDFeJztcblxudmFyIENBUkVUID0gUisrO1xuc3JjW0NBUkVUXSA9ICdeJyArIHNyY1tMT05FQ0FSRVRdICsgc3JjW1hSQU5HRVBMQUlOXSArICckJztcbnZhciBDQVJFVExPT1NFID0gUisrO1xuc3JjW0NBUkVUTE9PU0VdID0gJ14nICsgc3JjW0xPTkVDQVJFVF0gKyBzcmNbWFJBTkdFUExBSU5MT09TRV0gKyAnJCc7XG5cbi8vIEEgc2ltcGxlIGd0L2x0L2VxIHRoaW5nLCBvciBqdXN0IFwiXCIgdG8gaW5kaWNhdGUgXCJhbnkgdmVyc2lvblwiXG52YXIgQ09NUEFSQVRPUkxPT1NFID0gUisrO1xuc3JjW0NPTVBBUkFUT1JMT09TRV0gPSAnXicgKyBzcmNbR1RMVF0gKyAnXFxcXHMqKCcgKyBMT09TRVBMQUlOICsgJykkfF4kJztcbnZhciBDT01QQVJBVE9SID0gUisrO1xuc3JjW0NPTVBBUkFUT1JdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKignICsgRlVMTFBMQUlOICsgJykkfF4kJztcblxuXG4vLyBBbiBleHByZXNzaW9uIHRvIHN0cmlwIGFueSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIGd0bHQgYW5kIHRoZSB0aGluZ1xuLy8gaXQgbW9kaWZpZXMsIHNvIHRoYXQgYD4gMS4yLjNgID09PiBgPjEuMi4zYFxudmFyIENPTVBBUkFUT1JUUklNID0gUisrO1xuc3JjW0NPTVBBUkFUT1JUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbR1RMVF0gK1xuICAgICAgICAgICAgICAgICAgICAgICdcXFxccyooJyArIExPT1NFUExBSU4gKyAnfCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknO1xuXG4vLyB0aGlzIG9uZSBoYXMgdG8gdXNlIHRoZSAvZyBmbGFnXG5yZVtDT01QQVJBVE9SVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDT01QQVJBVE9SVFJJTV0sICdnJyk7XG52YXIgY29tcGFyYXRvclRyaW1SZXBsYWNlID0gJyQxJDIkMyc7XG5cblxuLy8gU29tZXRoaW5nIGxpa2UgYDEuMi4zIC0gMS4yLjRgXG4vLyBOb3RlIHRoYXQgdGhlc2UgYWxsIHVzZSB0aGUgbG9vc2UgZm9ybSwgYmVjYXVzZSB0aGV5J2xsIGJlXG4vLyBjaGVja2VkIGFnYWluc3QgZWl0aGVyIHRoZSBzdHJpY3Qgb3IgbG9vc2UgY29tcGFyYXRvciBmb3JtXG4vLyBsYXRlci5cbnZhciBIWVBIRU5SQU5HRSA9IFIrKztcbnNyY1tIWVBIRU5SQU5HRV0gPSAnXlxcXFxzKignICsgc3JjW1hSQU5HRVBMQUlOXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJ1xcXFxzKy1cXFxccysnICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnXFxcXHMqJCc7XG5cbnZhciBIWVBIRU5SQU5HRUxPT1NFID0gUisrO1xuc3JjW0hZUEhFTlJBTkdFTE9PU0VdID0gJ15cXFxccyooJyArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxcXHMrLVxcXFxzKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXFxccyokJztcblxuLy8gU3RhciByYW5nZXMgYmFzaWNhbGx5IGp1c3QgYWxsb3cgYW55dGhpbmcgYXQgYWxsLlxudmFyIFNUQVIgPSBSKys7XG5zcmNbU1RBUl0gPSAnKDx8Pik/PT9cXFxccypcXFxcKic7XG5cbi8vIENvbXBpbGUgdG8gYWN0dWFsIHJlZ2V4cCBvYmplY3RzLlxuLy8gQWxsIGFyZSBmbGFnLWZyZWUsIHVubGVzcyB0aGV5IHdlcmUgY3JlYXRlZCBhYm92ZSB3aXRoIGEgZmxhZy5cbmZvciAodmFyIGkgPSAwOyBpIDwgUjsgaSsrKSB7XG4gIGRlYnVnKGksIHNyY1tpXSk7XG4gIGlmICghcmVbaV0pXG4gICAgcmVbaV0gPSBuZXcgUmVnRXhwKHNyY1tpXSk7XG59XG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmZ1bmN0aW9uIHBhcnNlKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKVxuICAgIHJldHVybiB2ZXJzaW9uO1xuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgaWYgKHZlcnNpb24ubGVuZ3RoID4gTUFYX0xFTkdUSClcbiAgICByZXR1cm4gbnVsbDtcblxuICB2YXIgciA9IGxvb3NlID8gcmVbTE9PU0VdIDogcmVbRlVMTF07XG4gIGlmICghci50ZXN0KHZlcnNpb24pKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydHMudmFsaWQgPSB2YWxpZDtcbmZ1bmN0aW9uIHZhbGlkKHZlcnNpb24sIGxvb3NlKSB7XG4gIHZhciB2ID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gdiA/IHYudmVyc2lvbiA6IG51bGw7XG59XG5cblxuZXhwb3J0cy5jbGVhbiA9IGNsZWFuO1xuZnVuY3Rpb24gY2xlYW4odmVyc2lvbiwgbG9vc2UpIHtcbiAgdmFyIHMgPSBwYXJzZSh2ZXJzaW9uLnRyaW0oKS5yZXBsYWNlKC9eWz12XSsvLCAnJyksIGxvb3NlKTtcbiAgcmV0dXJuIHMgPyBzLnZlcnNpb24gOiBudWxsO1xufVxuXG5leHBvcnRzLlNlbVZlciA9IFNlbVZlcjtcblxuZnVuY3Rpb24gU2VtVmVyKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKSB7XG4gICAgaWYgKHZlcnNpb24ubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgZWxzZVxuICAgICAgdmVyc2lvbiA9IHZlcnNpb24udmVyc2lvbjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmVyc2lvbiBpcyBsb25nZXIgdGhhbiAnICsgTUFYX0xFTkdUSCArICcgY2hhcmFjdGVycycpXG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuXG4gIGRlYnVnKCdTZW1WZXInLCB2ZXJzaW9uLCBsb29zZSk7XG4gIHRoaXMubG9vc2UgPSBsb29zZTtcbiAgdmFyIG0gPSB2ZXJzaW9uLnRyaW0oKS5tYXRjaChsb29zZSA/IHJlW0xPT1NFXSA6IHJlW0ZVTExdKTtcblxuICBpZiAoIW0pXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBWZXJzaW9uOiAnICsgdmVyc2lvbik7XG5cbiAgdGhpcy5yYXcgPSB2ZXJzaW9uO1xuXG4gIC8vIHRoZXNlIGFyZSBhY3R1YWxseSBudW1iZXJzXG4gIHRoaXMubWFqb3IgPSArbVsxXTtcbiAgdGhpcy5taW5vciA9ICttWzJdO1xuICB0aGlzLnBhdGNoID0gK21bM107XG5cbiAgaWYgKHRoaXMubWFqb3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWFqb3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWFqb3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMubWlub3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWlub3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWlub3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMucGF0Y2ggPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMucGF0Y2ggPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgcGF0Y2ggdmVyc2lvbicpXG5cbiAgLy8gbnVtYmVyaWZ5IGFueSBwcmVyZWxlYXNlIG51bWVyaWMgaWRzXG4gIGlmICghbVs0XSlcbiAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgZWxzZVxuICAgIHRoaXMucHJlcmVsZWFzZSA9IG1bNF0uc3BsaXQoJy4nKS5tYXAoZnVuY3Rpb24oaWQpIHtcbiAgICAgIGlmICgvXlswLTldKyQvLnRlc3QoaWQpKSB7XG4gICAgICAgIHZhciBudW0gPSAraWQ7XG4gICAgICAgIGlmIChudW0gPj0gMCAmJiBudW0gPCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICAgIHJldHVybiBudW07XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG5cbiAgdGhpcy5idWlsZCA9IG1bNV0gPyBtWzVdLnNwbGl0KCcuJykgOiBbXTtcbiAgdGhpcy5mb3JtYXQoKTtcbn1cblxuU2VtVmVyLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy52ZXJzaW9uID0gdGhpcy5tYWpvciArICcuJyArIHRoaXMubWlub3IgKyAnLicgKyB0aGlzLnBhdGNoO1xuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICB0aGlzLnZlcnNpb24gKz0gJy0nICsgdGhpcy5wcmVyZWxlYXNlLmpvaW4oJy4nKTtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGRlYnVnKCdTZW1WZXIuY29tcGFyZScsIHRoaXMudmVyc2lvbiwgdGhpcy5sb29zZSwgb3RoZXIpO1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gdGhpcy5jb21wYXJlTWFpbihvdGhlcikgfHwgdGhpcy5jb21wYXJlUHJlKG90aGVyKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZU1haW4gPSBmdW5jdGlvbihvdGhlcikge1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWFqb3IsIG90aGVyLm1ham9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWlub3IsIG90aGVyLm1pbm9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMucGF0Y2gsIG90aGVyLnBhdGNoKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZVByZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSlcbiAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMubG9vc2UpO1xuXG4gIC8vIE5PVCBoYXZpbmcgYSBwcmVyZWxlYXNlIGlzID4gaGF2aW5nIG9uZVxuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpXG4gICAgcmV0dXJuIC0xO1xuICBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiBvdGhlci5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICByZXR1cm4gMTtcbiAgZWxzZSBpZiAoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGggJiYgIW90aGVyLnByZXJlbGVhc2UubGVuZ3RoKVxuICAgIHJldHVybiAwO1xuXG4gIHZhciBpID0gMDtcbiAgZG8ge1xuICAgIHZhciBhID0gdGhpcy5wcmVyZWxlYXNlW2ldO1xuICAgIHZhciBiID0gb3RoZXIucHJlcmVsZWFzZVtpXTtcbiAgICBkZWJ1ZygncHJlcmVsZWFzZSBjb21wYXJlJywgaSwgYSwgYik7XG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMDtcbiAgICBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChhID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gLTE7XG4gICAgZWxzZSBpZiAoYSA9PT0gYilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYik7XG4gIH0gd2hpbGUgKCsraSk7XG59O1xuXG4vLyBwcmVtaW5vciB3aWxsIGJ1bXAgdGhlIHZlcnNpb24gdXAgdG8gdGhlIG5leHQgbWlub3IgcmVsZWFzZSwgYW5kIGltbWVkaWF0ZWx5XG4vLyBkb3duIHRvIHByZS1yZWxlYXNlLiBwcmVtYWpvciBhbmQgcHJlcGF0Y2ggd29yayB0aGUgc2FtZSB3YXkuXG5TZW1WZXIucHJvdG90eXBlLmluYyA9IGZ1bmN0aW9uKHJlbGVhc2UsIGlkZW50aWZpZXIpIHtcbiAgc3dpdGNoIChyZWxlYXNlKSB7XG4gICAgY2FzZSAncHJlbWFqb3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IgPSAwO1xuICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncHJlbWlub3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ByZXBhdGNoJzpcbiAgICAgIC8vIElmIHRoaXMgaXMgYWxyZWFkeSBhIHByZXJlbGVhc2UsIGl0IHdpbGwgYnVtcCB0byB0aGUgbmV4dCB2ZXJzaW9uXG4gICAgICAvLyBkcm9wIGFueSBwcmVyZWxlYXNlcyB0aGF0IG1pZ2h0IGFscmVhZHkgZXhpc3QsIHNpbmNlIHRoZXkgYXJlIG5vdFxuICAgICAgLy8gcmVsZXZhbnQgYXQgdGhpcyBwb2ludC5cbiAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllcik7XG4gICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllcik7XG4gICAgICBicmVhaztcbiAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYSBub24tcHJlcmVsZWFzZSB2ZXJzaW9uLCB0aGlzIGFjdHMgdGhlIHNhbWUgYXNcbiAgICAvLyBwcmVwYXRjaC5cbiAgICBjYXNlICdwcmVyZWxlYXNlJzpcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLmluYygncGF0Y2gnLCBpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWFqb3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1tYWpvciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1ham9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1ham9yLlxuICAgICAgLy8gMS4wLjAtNSBidW1wcyB0byAxLjAuMFxuICAgICAgLy8gMS4xLjAgYnVtcHMgdG8gMi4wLjBcbiAgICAgIGlmICh0aGlzLm1pbm9yICE9PSAwIHx8IHRoaXMucGF0Y2ggIT09IDAgfHwgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5taW5vciA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWlub3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1taW5vciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1pbm9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1pbm9yLlxuICAgICAgLy8gMS4yLjAtNSBidW1wcyB0byAxLjIuMFxuICAgICAgLy8gMS4yLjEgYnVtcHMgdG8gMS4zLjBcbiAgICAgIGlmICh0aGlzLnBhdGNoICE9PSAwIHx8IHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApXG4gICAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMucGF0Y2ggPSAwO1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW107XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYXRjaCc6XG4gICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHByZS1yZWxlYXNlIHZlcnNpb24sIGl0IHdpbGwgaW5jcmVtZW50IHRoZSBwYXRjaC5cbiAgICAgIC8vIElmIGl0IGlzIGEgcHJlLXJlbGVhc2UgaXQgd2lsbCBidW1wIHVwIHRvIHRoZSBzYW1lIHBhdGNoIHZlcnNpb24uXG4gICAgICAvLyAxLjIuMC01IHBhdGNoZXMgdG8gMS4yLjBcbiAgICAgIC8vIDEuMi4wIHBhdGNoZXMgdG8gMS4yLjFcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLnBhdGNoKys7XG4gICAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgICAgIGJyZWFrO1xuICAgIC8vIFRoaXMgcHJvYmFibHkgc2hvdWxkbid0IGJlIHVzZWQgcHVibGljbHkuXG4gICAgLy8gMS4wLjAgXCJwcmVcIiB3b3VsZCBiZWNvbWUgMS4wLjAtMCB3aGljaCBpcyB0aGUgd3JvbmcgZGlyZWN0aW9uLlxuICAgIGNhc2UgJ3ByZSc6XG4gICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5wcmVyZWxlYXNlLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXJlbGVhc2VbaV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2VbaV0rKztcbiAgICAgICAgICAgIGkgPSAtMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IC0xKSAvLyBkaWRuJ3QgaW5jcmVtZW50IGFueXRoaW5nXG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLnB1c2goMCk7XG4gICAgICB9XG4gICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAvLyAxLjIuMC1iZXRhLjEgYnVtcHMgdG8gMS4yLjAtYmV0YS4yLFxuICAgICAgICAvLyAxLjIuMC1iZXRhLmZvb2JseiBvciAxLjIuMC1iZXRhIGJ1bXBzIHRvIDEuMi4wLWJldGEuMFxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlWzBdID09PSBpZGVudGlmaWVyKSB7XG4gICAgICAgICAgaWYgKGlzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkpXG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbaWRlbnRpZmllciwgMF07XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtpZGVudGlmaWVyLCAwXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpbmNyZW1lbnQgYXJndW1lbnQ6ICcgKyByZWxlYXNlKTtcbiAgfVxuICB0aGlzLmZvcm1hdCgpO1xuICB0aGlzLnJhdyA9IHRoaXMudmVyc2lvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5leHBvcnRzLmluYyA9IGluYztcbmZ1bmN0aW9uIGluYyh2ZXJzaW9uLCByZWxlYXNlLCBsb29zZSwgaWRlbnRpZmllcikge1xuICBpZiAodHlwZW9mKGxvb3NlKSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZGVudGlmaWVyID0gbG9vc2U7XG4gICAgbG9vc2UgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKS5pbmMocmVsZWFzZSwgaWRlbnRpZmllcikudmVyc2lvbjtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnRzLmRpZmYgPSBkaWZmO1xuZnVuY3Rpb24gZGlmZih2ZXJzaW9uMSwgdmVyc2lvbjIpIHtcbiAgaWYgKGVxKHZlcnNpb24xLCB2ZXJzaW9uMikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdjEgPSBwYXJzZSh2ZXJzaW9uMSk7XG4gICAgdmFyIHYyID0gcGFyc2UodmVyc2lvbjIpO1xuICAgIGlmICh2MS5wcmVyZWxlYXNlLmxlbmd0aCB8fCB2Mi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdtYWpvcicgfHwga2V5ID09PSAnbWlub3InIHx8IGtleSA9PT0gJ3BhdGNoJykge1xuICAgICAgICAgIGlmICh2MVtrZXldICE9PSB2MltrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ByZScra2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICdwcmVyZWxlYXNlJztcbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICBpZiAoa2V5ID09PSAnbWFqb3InIHx8IGtleSA9PT0gJ21pbm9yJyB8fCBrZXkgPT09ICdwYXRjaCcpIHtcbiAgICAgICAgaWYgKHYxW2tleV0gIT09IHYyW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuY29tcGFyZUlkZW50aWZpZXJzID0gY29tcGFyZUlkZW50aWZpZXJzO1xuXG52YXIgbnVtZXJpYyA9IC9eWzAtOV0rJC87XG5mdW5jdGlvbiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYikge1xuICB2YXIgYW51bSA9IG51bWVyaWMudGVzdChhKTtcbiAgdmFyIGJudW0gPSBudW1lcmljLnRlc3QoYik7XG5cbiAgaWYgKGFudW0gJiYgYm51bSkge1xuICAgIGEgPSArYTtcbiAgICBiID0gK2I7XG4gIH1cblxuICByZXR1cm4gKGFudW0gJiYgIWJudW0pID8gLTEgOlxuICAgICAgICAgKGJudW0gJiYgIWFudW0pID8gMSA6XG4gICAgICAgICBhIDwgYiA/IC0xIDpcbiAgICAgICAgIGEgPiBiID8gMSA6XG4gICAgICAgICAwO1xufVxuXG5leHBvcnRzLnJjb21wYXJlSWRlbnRpZmllcnMgPSByY29tcGFyZUlkZW50aWZpZXJzO1xuZnVuY3Rpb24gcmNvbXBhcmVJZGVudGlmaWVycyhhLCBiKSB7XG4gIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYiwgYSk7XG59XG5cbmV4cG9ydHMubWFqb3IgPSBtYWpvcjtcbmZ1bmN0aW9uIG1ham9yKGEsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5tYWpvcjtcbn1cblxuZXhwb3J0cy5taW5vciA9IG1pbm9yO1xuZnVuY3Rpb24gbWlub3IoYSwgbG9vc2UpIHtcbiAgcmV0dXJuIG5ldyBTZW1WZXIoYSwgbG9vc2UpLm1pbm9yO1xufVxuXG5leHBvcnRzLnBhdGNoID0gcGF0Y2g7XG5mdW5jdGlvbiBwYXRjaChhLCBsb29zZSkge1xuICByZXR1cm4gbmV3IFNlbVZlcihhLCBsb29zZSkucGF0Y2g7XG59XG5cbmV4cG9ydHMuY29tcGFyZSA9IGNvbXBhcmU7XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5jb21wYXJlKG5ldyBTZW1WZXIoYiwgbG9vc2UpKTtcbn1cblxuZXhwb3J0cy5jb21wYXJlTG9vc2UgPSBjb21wYXJlTG9vc2U7XG5mdW5jdGlvbiBjb21wYXJlTG9vc2UoYSwgYikge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCB0cnVlKTtcbn1cblxuZXhwb3J0cy5yY29tcGFyZSA9IHJjb21wYXJlO1xuZnVuY3Rpb24gcmNvbXBhcmUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYiwgYSwgbG9vc2UpO1xufVxuXG5leHBvcnRzLnNvcnQgPSBzb3J0O1xuZnVuY3Rpb24gc29ydChsaXN0LCBsb29zZSkge1xuICByZXR1cm4gbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5jb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMucnNvcnQgPSByc29ydDtcbmZ1bmN0aW9uIHJzb3J0KGxpc3QsIGxvb3NlKSB7XG4gIHJldHVybiBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBleHBvcnRzLnJjb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMuZ3QgPSBndDtcbmZ1bmN0aW9uIGd0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA+IDA7XG59XG5cbmV4cG9ydHMubHQgPSBsdDtcbmZ1bmN0aW9uIGx0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA8IDA7XG59XG5cbmV4cG9ydHMuZXEgPSBlcTtcbmZ1bmN0aW9uIGVxKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA9PT0gMDtcbn1cblxuZXhwb3J0cy5uZXEgPSBuZXE7XG5mdW5jdGlvbiBuZXEoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpICE9PSAwO1xufVxuXG5leHBvcnRzLmd0ZSA9IGd0ZTtcbmZ1bmN0aW9uIGd0ZShhLCBiLCBsb29zZSkge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMDtcbn1cblxuZXhwb3J0cy5sdGUgPSBsdGU7XG5mdW5jdGlvbiBsdGUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpIDw9IDA7XG59XG5cbmV4cG9ydHMuY21wID0gY21wO1xuZnVuY3Rpb24gY21wKGEsIG9wLCBiLCBsb29zZSkge1xuICB2YXIgcmV0O1xuICBzd2l0Y2ggKG9wKSB7XG4gICAgY2FzZSAnPT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIGEgPSBhLnZlcnNpb247XG4gICAgICBpZiAodHlwZW9mIGIgPT09ICdvYmplY3QnKSBiID0gYi52ZXJzaW9uO1xuICAgICAgcmV0ID0gYSA9PT0gYjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJyE9PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKSBhID0gYS52ZXJzaW9uO1xuICAgICAgaWYgKHR5cGVvZiBiID09PSAnb2JqZWN0JykgYiA9IGIudmVyc2lvbjtcbiAgICAgIHJldCA9IGEgIT09IGI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICcnOiBjYXNlICc9JzogY2FzZSAnPT0nOiByZXQgPSBlcShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGNhc2UgJyE9JzogcmV0ID0gbmVxKGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPic6IHJldCA9IGd0KGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPj0nOiByZXQgPSBndGUoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8JzogcmV0ID0gbHQoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8PSc6IHJldCA9IGx0ZShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgb3BlcmF0b3I6ICcgKyBvcCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0cy5Db21wYXJhdG9yID0gQ29tcGFyYXRvcjtcbmZ1bmN0aW9uIENvbXBhcmF0b3IoY29tcCwgbG9vc2UpIHtcbiAgaWYgKGNvbXAgaW5zdGFuY2VvZiBDb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXAubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIGNvbXA7XG4gICAgZWxzZVxuICAgICAgY29tcCA9IGNvbXAudmFsdWU7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpXG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcblxuICBkZWJ1ZygnY29tcGFyYXRvcicsIGNvbXAsIGxvb3NlKTtcbiAgdGhpcy5sb29zZSA9IGxvb3NlO1xuICB0aGlzLnBhcnNlKGNvbXApO1xuXG4gIGlmICh0aGlzLnNlbXZlciA9PT0gQU5ZKVxuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgZWxzZVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wZXJhdG9yICsgdGhpcy5zZW12ZXIudmVyc2lvbjtcblxuICBkZWJ1ZygnY29tcCcsIHRoaXMpO1xufVxuXG52YXIgQU5ZID0ge307XG5Db21wYXJhdG9yLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKGNvbXApIHtcbiAgdmFyIHIgPSB0aGlzLmxvb3NlID8gcmVbQ09NUEFSQVRPUkxPT1NFXSA6IHJlW0NPTVBBUkFUT1JdO1xuICB2YXIgbSA9IGNvbXAubWF0Y2gocik7XG5cbiAgaWYgKCFtKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY29tcGFyYXRvcjogJyArIGNvbXApO1xuXG4gIHRoaXMub3BlcmF0b3IgPSBtWzFdO1xuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJz0nKVxuICAgIHRoaXMub3BlcmF0b3IgPSAnJztcblxuICAvLyBpZiBpdCBsaXRlcmFsbHkgaXMganVzdCAnPicgb3IgJycgdGhlbiBhbGxvdyBhbnl0aGluZy5cbiAgaWYgKCFtWzJdKVxuICAgIHRoaXMuc2VtdmVyID0gQU5ZO1xuICBlbHNlXG4gICAgdGhpcy5zZW12ZXIgPSBuZXcgU2VtVmVyKG1bMl0sIHRoaXMubG9vc2UpO1xufTtcblxuQ29tcGFyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmFsdWU7XG59O1xuXG5Db21wYXJhdG9yLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24odmVyc2lvbikge1xuICBkZWJ1ZygnQ29tcGFyYXRvci50ZXN0JywgdmVyc2lvbiwgdGhpcy5sb29zZSk7XG5cbiAgaWYgKHRoaXMuc2VtdmVyID09PSBBTlkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnc3RyaW5nJylcbiAgICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY21wKHZlcnNpb24sIHRoaXMub3BlcmF0b3IsIHRoaXMuc2VtdmVyLCB0aGlzLmxvb3NlKTtcbn07XG5cbkNvbXBhcmF0b3IucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbihjb21wLCBsb29zZSkge1xuICBpZiAoIShjb21wIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhIENvbXBhcmF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHZhciByYW5nZVRtcDtcblxuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJycpIHtcbiAgICByYW5nZVRtcCA9IG5ldyBSYW5nZShjb21wLnZhbHVlLCBsb29zZSk7XG4gICAgcmV0dXJuIHNhdGlzZmllcyh0aGlzLnZhbHVlLCByYW5nZVRtcCwgbG9vc2UpO1xuICB9IGVsc2UgaWYgKGNvbXAub3BlcmF0b3IgPT09ICcnKSB7XG4gICAgcmFuZ2VUbXAgPSBuZXcgUmFuZ2UodGhpcy52YWx1ZSwgbG9vc2UpO1xuICAgIHJldHVybiBzYXRpc2ZpZXMoY29tcC5zZW12ZXIsIHJhbmdlVG1wLCBsb29zZSk7XG4gIH1cblxuICB2YXIgc2FtZURpcmVjdGlvbkluY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJz49JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPicpO1xuICB2YXIgc2FtZURpcmVjdGlvbkRlY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPD0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc8JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpO1xuICB2YXIgc2FtZVNlbVZlciA9IHRoaXMuc2VtdmVyLnZlcnNpb24gPT09IGNvbXAuc2VtdmVyLnZlcnNpb247XG4gIHZhciBkaWZmZXJlbnREaXJlY3Rpb25zSW5jbHVzaXZlID1cbiAgICAodGhpcy5vcGVyYXRvciA9PT0gJz49JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPD0nKSAmJlxuICAgIChjb21wLm9wZXJhdG9yID09PSAnPj0nIHx8IGNvbXAub3BlcmF0b3IgPT09ICc8PScpO1xuICB2YXIgb3Bwb3NpdGVEaXJlY3Rpb25zTGVzc1RoYW4gPVxuICAgIGNtcCh0aGlzLnNlbXZlciwgJzwnLCBjb21wLnNlbXZlciwgbG9vc2UpICYmXG4gICAgKCh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpKTtcbiAgdmFyIG9wcG9zaXRlRGlyZWN0aW9uc0dyZWF0ZXJUaGFuID1cbiAgICBjbXAodGhpcy5zZW12ZXIsICc+JywgY29tcC5zZW12ZXIsIGxvb3NlKSAmJlxuICAgICgodGhpcy5vcGVyYXRvciA9PT0gJzw9JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPCcpICYmXG4gICAgKGNvbXAub3BlcmF0b3IgPT09ICc+PScgfHwgY29tcC5vcGVyYXRvciA9PT0gJz4nKSk7XG5cbiAgcmV0dXJuIHNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIHx8IHNhbWVEaXJlY3Rpb25EZWNyZWFzaW5nIHx8XG4gICAgKHNhbWVTZW1WZXIgJiYgZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSkgfHxcbiAgICBvcHBvc2l0ZURpcmVjdGlvbnNMZXNzVGhhbiB8fCBvcHBvc2l0ZURpcmVjdGlvbnNHcmVhdGVyVGhhbjtcbn07XG5cblxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuZnVuY3Rpb24gUmFuZ2UocmFuZ2UsIGxvb3NlKSB7XG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIFJhbmdlKSB7XG4gICAgaWYgKHJhbmdlLmxvb3NlID09PSBsb29zZSkge1xuICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnJhdywgbG9vc2UpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIENvbXBhcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnZhbHVlLCBsb29zZSk7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmFuZ2UpKVxuICAgIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB0aGlzLmxvb3NlID0gbG9vc2U7XG5cbiAgLy8gRmlyc3QsIHNwbGl0IGJhc2VkIG9uIGJvb2xlYW4gb3IgfHxcbiAgdGhpcy5yYXcgPSByYW5nZTtcbiAgdGhpcy5zZXQgPSByYW5nZS5zcGxpdCgvXFxzKlxcfFxcfFxccyovKS5tYXAoZnVuY3Rpb24ocmFuZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVJhbmdlKHJhbmdlLnRyaW0oKSk7XG4gIH0sIHRoaXMpLmZpbHRlcihmdW5jdGlvbihjKSB7XG4gICAgLy8gdGhyb3cgb3V0IGFueSB0aGF0IGFyZSBub3QgcmVsZXZhbnQgZm9yIHdoYXRldmVyIHJlYXNvblxuICAgIHJldHVybiBjLmxlbmd0aDtcbiAgfSk7XG5cbiAgaWYgKCF0aGlzLnNldC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFNlbVZlciBSYW5nZTogJyArIHJhbmdlKTtcbiAgfVxuXG4gIHRoaXMuZm9ybWF0KCk7XG59XG5cblJhbmdlLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yYW5nZSA9IHRoaXMuc2V0Lm1hcChmdW5jdGlvbihjb21wcykge1xuICAgIHJldHVybiBjb21wcy5qb2luKCcgJykudHJpbSgpO1xuICB9KS5qb2luKCd8fCcpLnRyaW0oKTtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUucGFyc2VSYW5nZSA9IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBsb29zZSA9IHRoaXMubG9vc2U7XG4gIHJhbmdlID0gcmFuZ2UudHJpbSgpO1xuICBkZWJ1ZygncmFuZ2UnLCByYW5nZSwgbG9vc2UpO1xuICAvLyBgMS4yLjMgLSAxLjIuNGAgPT4gYD49MS4yLjMgPD0xLjIuNGBcbiAgdmFyIGhyID0gbG9vc2UgPyByZVtIWVBIRU5SQU5HRUxPT1NFXSA6IHJlW0hZUEhFTlJBTkdFXTtcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKGhyLCBoeXBoZW5SZXBsYWNlKTtcbiAgZGVidWcoJ2h5cGhlbiByZXBsYWNlJywgcmFuZ2UpO1xuICAvLyBgPiAxLjIuMyA8IDEuMi41YCA9PiBgPjEuMi4zIDwxLjIuNWBcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW0NPTVBBUkFUT1JUUklNXSwgY29tcGFyYXRvclRyaW1SZXBsYWNlKTtcbiAgZGVidWcoJ2NvbXBhcmF0b3IgdHJpbScsIHJhbmdlLCByZVtDT01QQVJBVE9SVFJJTV0pO1xuXG4gIC8vIGB+IDEuMi4zYCA9PiBgfjEuMi4zYFxuICByYW5nZSA9IHJhbmdlLnJlcGxhY2UocmVbVElMREVUUklNXSwgdGlsZGVUcmltUmVwbGFjZSk7XG5cbiAgLy8gYF4gMS4yLjNgID0+IGBeMS4yLjNgXG4gIHJhbmdlID0gcmFuZ2UucmVwbGFjZShyZVtDQVJFVFRSSU1dLCBjYXJldFRyaW1SZXBsYWNlKTtcblxuICAvLyBub3JtYWxpemUgc3BhY2VzXG4gIHJhbmdlID0gcmFuZ2Uuc3BsaXQoL1xccysvKS5qb2luKCcgJyk7XG5cbiAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIHJhbmdlIGlzIGNvbXBsZXRlbHkgdHJpbW1lZCBhbmRcbiAgLy8gcmVhZHkgdG8gYmUgc3BsaXQgaW50byBjb21wYXJhdG9ycy5cblxuICB2YXIgY29tcFJlID0gbG9vc2UgPyByZVtDT01QQVJBVE9STE9PU0VdIDogcmVbQ09NUEFSQVRPUl07XG4gIHZhciBzZXQgPSByYW5nZS5zcGxpdCgnICcpLm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIHBhcnNlQ29tcGFyYXRvcihjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKS5zcGxpdCgvXFxzKy8pO1xuICBpZiAodGhpcy5sb29zZSkge1xuICAgIC8vIGluIGxvb3NlIG1vZGUsIHRocm93IG91dCBhbnkgdGhhdCBhcmUgbm90IHZhbGlkIGNvbXBhcmF0b3JzXG4gICAgc2V0ID0gc2V0LmZpbHRlcihmdW5jdGlvbihjb21wKSB7XG4gICAgICByZXR1cm4gISFjb21wLm1hdGNoKGNvbXBSZSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNldDtcbn07XG5cblJhbmdlLnByb3RvdHlwZS5pbnRlcnNlY3RzID0gZnVuY3Rpb24ocmFuZ2UsIGxvb3NlKSB7XG4gIGlmICghKHJhbmdlIGluc3RhbmNlb2YgUmFuZ2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYSBSYW5nZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2V0LnNvbWUoZnVuY3Rpb24odGhpc0NvbXBhcmF0b3JzKSB7XG4gICAgcmV0dXJuIHRoaXNDb21wYXJhdG9ycy5ldmVyeShmdW5jdGlvbih0aGlzQ29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHJhbmdlLnNldC5zb21lKGZ1bmN0aW9uKHJhbmdlQ29tcGFyYXRvcnMpIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlQ29tcGFyYXRvcnMuZXZlcnkoZnVuY3Rpb24ocmFuZ2VDb21wYXJhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNDb21wYXJhdG9yLmludGVyc2VjdHMocmFuZ2VDb21wYXJhdG9yLCBsb29zZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gTW9zdGx5IGp1c3QgZm9yIHRlc3RpbmcgYW5kIGxlZ2FjeSBBUEkgcmVhc29uc1xuZXhwb3J0cy50b0NvbXBhcmF0b3JzID0gdG9Db21wYXJhdG9ycztcbmZ1bmN0aW9uIHRvQ29tcGFyYXRvcnMocmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKS5zZXQubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gY29tcC5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfSkuam9pbignICcpLnRyaW0oKS5zcGxpdCgnICcpO1xuICB9KTtcbn1cblxuLy8gY29tcHJpc2VkIG9mIHhyYW5nZXMsIHRpbGRlcywgc3RhcnMsIGFuZCBndGx0J3MgYXQgdGhpcyBwb2ludC5cbi8vIGFscmVhZHkgcmVwbGFjZWQgdGhlIGh5cGhlbiByYW5nZXNcbi8vIHR1cm4gaW50byBhIHNldCBvZiBKVVNUIGNvbXBhcmF0b3JzLlxuZnVuY3Rpb24gcGFyc2VDb21wYXJhdG9yKGNvbXAsIGxvb3NlKSB7XG4gIGRlYnVnKCdjb21wJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlQ2FyZXRzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlVGlsZGVzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ3RpbGRlcycsIGNvbXApO1xuICBjb21wID0gcmVwbGFjZVhSYW5nZXMoY29tcCwgbG9vc2UpO1xuICBkZWJ1ZygneHJhbmdlJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlU3RhcnMoY29tcCwgbG9vc2UpO1xuICBkZWJ1Zygnc3RhcnMnLCBjb21wKTtcbiAgcmV0dXJuIGNvbXA7XG59XG5cbmZ1bmN0aW9uIGlzWChpZCkge1xuICByZXR1cm4gIWlkIHx8IGlkLnRvTG93ZXJDYXNlKCkgPT09ICd4JyB8fCBpZCA9PT0gJyonO1xufVxuXG4vLyB+LCB+PiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIH4yLCB+Mi54LCB+Mi54LngsIH4+Miwgfj4yLnggfj4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIH4yLjAsIH4yLjAueCwgfj4yLjAsIH4+Mi4wLnggLS0+ID49Mi4wLjAgPDIuMS4wXG4vLyB+MS4yLCB+MS4yLngsIH4+MS4yLCB+PjEuMi54IC0tPiA+PTEuMi4wIDwxLjMuMFxuLy8gfjEuMi4zLCB+PjEuMi4zIC0tPiA+PTEuMi4zIDwxLjMuMFxuLy8gfjEuMi4wLCB+PjEuMi4wIC0tPiA+PTEuMi4wIDwxLjMuMFxuZnVuY3Rpb24gcmVwbGFjZVRpbGRlcyhjb21wLCBsb29zZSkge1xuICByZXR1cm4gY29tcC50cmltKCkuc3BsaXQoL1xccysvKS5tYXAoZnVuY3Rpb24oY29tcCkge1xuICAgIHJldHVybiByZXBsYWNlVGlsZGUoY29tcCwgbG9vc2UpO1xuICB9KS5qb2luKCcgJyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VUaWxkZShjb21wLCBsb29zZSkge1xuICB2YXIgciA9IGxvb3NlID8gcmVbVElMREVMT09TRV0gOiByZVtUSUxERV07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygndGlsZGUnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKVxuICAgICAgLy8gfjEuMiA9PSA+PTEuMi4wIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICBlbHNlIGlmIChwcikge1xuICAgICAgZGVidWcoJ3JlcGxhY2VUaWxkZSBwcicsIHByKTtcbiAgICAgIGlmIChwci5jaGFyQXQoMCkgIT09ICctJylcbiAgICAgICAgcHIgPSAnLScgKyBwcjtcbiAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9IGVsc2VcbiAgICAgIC8vIH4xLjIuMyA9PSA+PTEuMi4zIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcblxuICAgIGRlYnVnKCd0aWxkZSByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG4vLyBeIC0tPiAqIChhbnksIGtpbmRhIHNpbGx5KVxuLy8gXjIsIF4yLngsIF4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4yLjAsIF4yLjAueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4xLjIsIF4xLjIueCAtLT4gPj0xLjIuMCA8Mi4wLjBcbi8vIF4xLjIuMyAtLT4gPj0xLjIuMyA8Mi4wLjBcbi8vIF4xLjIuMCAtLT4gPj0xLjIuMCA8Mi4wLjBcbmZ1bmN0aW9uIHJlcGxhY2VDYXJldHMoY29tcCwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZUNhcmV0KGNvbXAsIGxvb3NlKTtcbiAgfSkuam9pbignICcpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ2FyZXQoY29tcCwgbG9vc2UpIHtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCwgbG9vc2UpO1xuICB2YXIgciA9IGxvb3NlID8gcmVbQ0FSRVRMT09TRV0gOiByZVtDQVJFVF07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygnY2FyZXQnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKSB7XG4gICAgICBpZiAoTSA9PT0gJzAnKVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2UgaWYgKHByKSB7XG4gICAgICBkZWJ1ZygncmVwbGFjZUNhcmV0IHByJywgcHIpO1xuICAgICAgaWYgKHByLmNoYXJBdCgwKSAhPT0gJy0nKVxuICAgICAgICBwciA9ICctJyArIHByO1xuICAgICAgaWYgKE0gPT09ICcwJykge1xuICAgICAgICBpZiAobSA9PT0gJzAnKVxuICAgICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICsgcHIgK1xuICAgICAgICAgICAgICAgICcgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICcgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ25vIHByJyk7XG4gICAgICBpZiAoTSA9PT0gJzAnKSB7XG4gICAgICAgIGlmIChtID09PSAnMCcpXG4gICAgICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgJyA8JyArICgrTSArIDEpICsgJy4wLjAnO1xuICAgIH1cblxuICAgIGRlYnVnKCdjYXJldCByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlWFJhbmdlcyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVhSYW5nZXMnLCBjb21wLCBsb29zZSk7XG4gIHJldHVybiBjb21wLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSkge1xuICBjb21wID0gY29tcC50cmltKCk7XG4gIHZhciByID0gbG9vc2UgPyByZVtYUkFOR0VMT09TRV0gOiByZVtYUkFOR0VdO1xuICByZXR1cm4gY29tcC5yZXBsYWNlKHIsIGZ1bmN0aW9uKHJldCwgZ3RsdCwgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygneFJhbmdlJywgY29tcCwgcmV0LCBndGx0LCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHhNID0gaXNYKE0pO1xuICAgIHZhciB4bSA9IHhNIHx8IGlzWChtKTtcbiAgICB2YXIgeHAgPSB4bSB8fCBpc1gocCk7XG4gICAgdmFyIGFueVggPSB4cDtcblxuICAgIGlmIChndGx0ID09PSAnPScgJiYgYW55WClcbiAgICAgIGd0bHQgPSAnJztcblxuICAgIGlmICh4TSkge1xuICAgICAgaWYgKGd0bHQgPT09ICc+JyB8fCBndGx0ID09PSAnPCcpIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBhbGxvd2VkXG4gICAgICAgIHJldCA9ICc8MC4wLjAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBmb3JiaWRkZW5cbiAgICAgICAgcmV0ID0gJyonO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3RsdCAmJiBhbnlYKSB7XG4gICAgICAvLyByZXBsYWNlIFggd2l0aCAwXG4gICAgICBpZiAoeG0pXG4gICAgICAgIG0gPSAwO1xuICAgICAgaWYgKHhwKVxuICAgICAgICBwID0gMDtcblxuICAgICAgaWYgKGd0bHQgPT09ICc+Jykge1xuICAgICAgICAvLyA+MSA9PiA+PTIuMC4wXG4gICAgICAgIC8vID4xLjIgPT4gPj0xLjMuMFxuICAgICAgICAvLyA+MS4yLjMgPT4gPj0gMS4yLjRcbiAgICAgICAgZ3RsdCA9ICc+PSc7XG4gICAgICAgIGlmICh4bSkge1xuICAgICAgICAgIE0gPSArTSArIDE7XG4gICAgICAgICAgbSA9IDA7XG4gICAgICAgICAgcCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoeHApIHtcbiAgICAgICAgICBtID0gK20gKyAxO1xuICAgICAgICAgIHAgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGd0bHQgPT09ICc8PScpIHtcbiAgICAgICAgLy8gPD0wLjcueCBpcyBhY3R1YWxseSA8MC44LjAsIHNpbmNlIGFueSAwLjcueCBzaG91bGRcbiAgICAgICAgLy8gcGFzcy4gIFNpbWlsYXJseSwgPD03LnggaXMgYWN0dWFsbHkgPDguMC4wLCBldGMuXG4gICAgICAgIGd0bHQgPSAnPCc7XG4gICAgICAgIGlmICh4bSlcbiAgICAgICAgICBNID0gK00gKyAxO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbSA9ICttICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0ID0gZ3RsdCArIE0gKyAnLicgKyBtICsgJy4nICsgcDtcbiAgICB9IGVsc2UgaWYgKHhtKSB7XG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgfSBlbHNlIGlmICh4cCkge1xuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9XG5cbiAgICBkZWJ1ZygneFJhbmdlIHJldHVybicsIHJldCk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cblxuLy8gQmVjYXVzZSAqIGlzIEFORC1lZCB3aXRoIGV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgY29tcGFyYXRvcixcbi8vIGFuZCAnJyBtZWFucyBcImFueSB2ZXJzaW9uXCIsIGp1c3QgcmVtb3ZlIHRoZSAqcyBlbnRpcmVseS5cbmZ1bmN0aW9uIHJlcGxhY2VTdGFycyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVN0YXJzJywgY29tcCwgbG9vc2UpO1xuICAvLyBMb29zZW5lc3MgaXMgaWdub3JlZCBoZXJlLiAgc3RhciBpcyBhbHdheXMgYXMgbG9vc2UgYXMgaXQgZ2V0cyFcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnJlcGxhY2UocmVbU1RBUl0sICcnKTtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gc3RyaW5nLnJlcGxhY2UocmVbSFlQSEVOUkFOR0VdKVxuLy8gTSwgbSwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkXG4vLyAxLjIgLSAzLjQuNSA9PiA+PTEuMi4wIDw9My40LjVcbi8vIDEuMi4zIC0gMy40ID0+ID49MS4yLjAgPDMuNS4wIEFueSAzLjQueCB3aWxsIGRvXG4vLyAxLjIgLSAzLjQgPT4gPj0xLjIuMCA8My41LjBcbmZ1bmN0aW9uIGh5cGhlblJlcGxhY2UoJDAsXG4gICAgICAgICAgICAgICAgICAgICAgIGZyb20sIGZNLCBmbSwgZnAsIGZwciwgZmIsXG4gICAgICAgICAgICAgICAgICAgICAgIHRvLCB0TSwgdG0sIHRwLCB0cHIsIHRiKSB7XG5cbiAgaWYgKGlzWChmTSkpXG4gICAgZnJvbSA9ICcnO1xuICBlbHNlIGlmIChpc1goZm0pKVxuICAgIGZyb20gPSAnPj0nICsgZk0gKyAnLjAuMCc7XG4gIGVsc2UgaWYgKGlzWChmcCkpXG4gICAgZnJvbSA9ICc+PScgKyBmTSArICcuJyArIGZtICsgJy4wJztcbiAgZWxzZVxuICAgIGZyb20gPSAnPj0nICsgZnJvbTtcblxuICBpZiAoaXNYKHRNKSlcbiAgICB0byA9ICcnO1xuICBlbHNlIGlmIChpc1godG0pKVxuICAgIHRvID0gJzwnICsgKCt0TSArIDEpICsgJy4wLjAnO1xuICBlbHNlIGlmIChpc1godHApKVxuICAgIHRvID0gJzwnICsgdE0gKyAnLicgKyAoK3RtICsgMSkgKyAnLjAnO1xuICBlbHNlIGlmICh0cHIpXG4gICAgdG8gPSAnPD0nICsgdE0gKyAnLicgKyB0bSArICcuJyArIHRwICsgJy0nICsgdHByO1xuICBlbHNlXG4gICAgdG8gPSAnPD0nICsgdG87XG5cbiAgcmV0dXJuIChmcm9tICsgJyAnICsgdG8pLnRyaW0oKTtcbn1cblxuXG4vLyBpZiBBTlkgb2YgdGhlIHNldHMgbWF0Y2ggQUxMIG9mIGl0cyBjb21wYXJhdG9ycywgdGhlbiBwYXNzXG5SYW5nZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKHZlcnNpb24pIHtcbiAgaWYgKCF2ZXJzaW9uKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKVxuICAgIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIHRoaXMubG9vc2UpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGVzdFNldCh0aGlzLnNldFtpXSwgdmVyc2lvbikpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiB0ZXN0U2V0KHNldCwgdmVyc2lvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKykge1xuICAgIGlmICghc2V0W2ldLnRlc3QodmVyc2lvbikpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgIC8vIEZpbmQgdGhlIHNldCBvZiB2ZXJzaW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyhzZXRbaV0uc2VtdmVyKTtcbiAgICAgIGlmIChzZXRbaV0uc2VtdmVyID09PSBBTlkpXG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBpZiAoc2V0W2ldLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGFsbG93ZWQgPSBzZXRbaV0uc2VtdmVyO1xuICAgICAgICBpZiAoYWxsb3dlZC5tYWpvciA9PT0gdmVyc2lvbi5tYWpvciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5taW5vciA9PT0gdmVyc2lvbi5taW5vciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5wYXRjaCA9PT0gdmVyc2lvbi5wYXRjaClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWZXJzaW9uIGhhcyBhIC1wcmUsIGJ1dCBpdCdzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2UgbGlrZS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0cy5zYXRpc2ZpZXMgPSBzYXRpc2ZpZXM7XG5mdW5jdGlvbiBzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHRyeSB7XG4gICAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbik7XG59XG5cbmV4cG9ydHMubWF4U2F0aXNmeWluZyA9IG1heFNhdGlzZnlpbmc7XG5mdW5jdGlvbiBtYXhTYXRpc2Z5aW5nKHZlcnNpb25zLCByYW5nZSwgbG9vc2UpIHtcbiAgdmFyIG1heCA9IG51bGw7XG4gIHZhciBtYXhTViA9IG51bGw7XG4gIHRyeSB7XG4gICAgdmFyIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSk7XG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7IC8vIHNhdGlzZmllcyh2LCByYW5nZSwgbG9vc2UpXG4gICAgICBpZiAoIW1heCB8fCBtYXhTVi5jb21wYXJlKHYpID09PSAtMSkgeyAvLyBjb21wYXJlKG1heCwgdiwgdHJ1ZSlcbiAgICAgICAgbWF4ID0gdjtcbiAgICAgICAgbWF4U1YgPSBuZXcgU2VtVmVyKG1heCwgbG9vc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG1heDtcbn1cblxuZXhwb3J0cy5taW5TYXRpc2Z5aW5nID0gbWluU2F0aXNmeWluZztcbmZ1bmN0aW9uIG1pblNhdGlzZnlpbmcodmVyc2lvbnMsIHJhbmdlLCBsb29zZSkge1xuICB2YXIgbWluID0gbnVsbDtcbiAgdmFyIG1pblNWID0gbnVsbDtcbiAgdHJ5IHtcbiAgICB2YXIgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHsgLy8gc2F0aXNmaWVzKHYsIHJhbmdlLCBsb29zZSlcbiAgICAgIGlmICghbWluIHx8IG1pblNWLmNvbXBhcmUodikgPT09IDEpIHsgLy8gY29tcGFyZShtaW4sIHYsIHRydWUpXG4gICAgICAgIG1pbiA9IHY7XG4gICAgICAgIG1pblNWID0gbmV3IFNlbVZlcihtaW4sIGxvb3NlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBtaW47XG59XG5cbmV4cG9ydHMudmFsaWRSYW5nZSA9IHZhbGlkUmFuZ2U7XG5mdW5jdGlvbiB2YWxpZFJhbmdlKHJhbmdlLCBsb29zZSkge1xuICB0cnkge1xuICAgIC8vIFJldHVybiAnKicgaW5zdGVhZCBvZiAnJyBzbyB0aGF0IHRydXRoaW5lc3Mgd29ya3MuXG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIGl0J3MgaW52YWxpZCBhbnl3YXlcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSkucmFuZ2UgfHwgJyonO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZVxuZXhwb3J0cy5sdHIgPSBsdHI7XG5mdW5jdGlvbiBsdHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPCcsIGxvb3NlKTtcbn1cblxuLy8gRGV0ZXJtaW5lIGlmIHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGUgdmVyc2lvbnMgcG9zc2libGUgaW4gdGhlIHJhbmdlLlxuZXhwb3J0cy5ndHIgPSBndHI7XG5mdW5jdGlvbiBndHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPicsIGxvb3NlKTtcbn1cblxuZXhwb3J0cy5vdXRzaWRlID0gb3V0c2lkZTtcbmZ1bmN0aW9uIG91dHNpZGUodmVyc2lvbiwgcmFuZ2UsIGhpbG8sIGxvb3NlKSB7XG4gIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKTtcbiAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB2YXIgZ3RmbiwgbHRlZm4sIGx0Zm4sIGNvbXAsIGVjb21wO1xuICBzd2l0Y2ggKGhpbG8pIHtcbiAgICBjYXNlICc+JzpcbiAgICAgIGd0Zm4gPSBndDtcbiAgICAgIGx0ZWZuID0gbHRlO1xuICAgICAgbHRmbiA9IGx0O1xuICAgICAgY29tcCA9ICc+JztcbiAgICAgIGVjb21wID0gJz49JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzwnOlxuICAgICAgZ3RmbiA9IGx0O1xuICAgICAgbHRlZm4gPSBndGU7XG4gICAgICBsdGZuID0gZ3Q7XG4gICAgICBjb21wID0gJzwnO1xuICAgICAgZWNvbXAgPSAnPD0nO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ011c3QgcHJvdmlkZSBhIGhpbG8gdmFsIG9mIFwiPFwiIG9yIFwiPlwiJyk7XG4gIH1cblxuICAvLyBJZiBpdCBzYXRpc2lmZXMgdGhlIHJhbmdlIGl0IGlzIG5vdCBvdXRzaWRlXG4gIGlmIChzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZyb20gbm93IG9uLCB2YXJpYWJsZSB0ZXJtcyBhcmUgYXMgaWYgd2UncmUgaW4gXCJndHJcIiBtb2RlLlxuICAvLyBidXQgbm90ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmxpcHBlZCBmb3IgdGhlIFwibHRyXCIgZnVuY3Rpb24uXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZS5zZXQubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV07XG5cbiAgICB2YXIgaGlnaCA9IG51bGw7XG4gICAgdmFyIGxvdyA9IG51bGw7XG5cbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBhcmF0b3IpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yLnNlbXZlciA9PT0gQU5ZKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSBuZXcgQ29tcGFyYXRvcignPj0wLjAuMCcpXG4gICAgICB9XG4gICAgICBoaWdoID0gaGlnaCB8fCBjb21wYXJhdG9yO1xuICAgICAgbG93ID0gbG93IHx8IGNvbXBhcmF0b3I7XG4gICAgICBpZiAoZ3Rmbihjb21wYXJhdG9yLnNlbXZlciwgaGlnaC5zZW12ZXIsIGxvb3NlKSkge1xuICAgICAgICBoaWdoID0gY29tcGFyYXRvcjtcbiAgICAgIH0gZWxzZSBpZiAobHRmbihjb21wYXJhdG9yLnNlbXZlciwgbG93LnNlbXZlciwgbG9vc2UpKSB7XG4gICAgICAgIGxvdyA9IGNvbXBhcmF0b3I7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGUgZWRnZSB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGEgb3BlcmF0b3IgdGhlbiBvdXIgdmVyc2lvblxuICAgIC8vIGlzbid0IG91dHNpZGUgaXRcbiAgICBpZiAoaGlnaC5vcGVyYXRvciA9PT0gY29tcCB8fCBoaWdoLm9wZXJhdG9yID09PSBlY29tcCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBsb3dlc3QgdmVyc2lvbiBjb21wYXJhdG9yIGhhcyBhbiBvcGVyYXRvciBhbmQgb3VyIHZlcnNpb25cbiAgICAvLyBpcyBsZXNzIHRoYW4gaXQgdGhlbiBpdCBpc24ndCBoaWdoZXIgdGhhbiB0aGUgcmFuZ2VcbiAgICBpZiAoKCFsb3cub3BlcmF0b3IgfHwgbG93Lm9wZXJhdG9yID09PSBjb21wKSAmJlxuICAgICAgICBsdGVmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobG93Lm9wZXJhdG9yID09PSBlY29tcCAmJiBsdGZuKHZlcnNpb24sIGxvdy5zZW12ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnRzLnByZXJlbGVhc2UgPSBwcmVyZWxlYXNlO1xuZnVuY3Rpb24gcHJlcmVsZWFzZSh2ZXJzaW9uLCBsb29zZSkge1xuICB2YXIgcGFyc2VkID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gKHBhcnNlZCAmJiBwYXJzZWQucHJlcmVsZWFzZS5sZW5ndGgpID8gcGFyc2VkLnByZXJlbGVhc2UgOiBudWxsO1xufVxuXG5leHBvcnRzLmludGVyc2VjdHMgPSBpbnRlcnNlY3RzO1xuZnVuY3Rpb24gaW50ZXJzZWN0cyhyMSwgcjIsIGxvb3NlKSB7XG4gIHIxID0gbmV3IFJhbmdlKHIxLCBsb29zZSlcbiAgcjIgPSBuZXcgUmFuZ2UocjIsIGxvb3NlKVxuICByZXR1cm4gcjEuaW50ZXJzZWN0cyhyMilcbn1cblxuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5mdW5jdGlvbiBjb2VyY2UodmVyc2lvbikge1xuICBpZiAodmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlcilcbiAgICByZXR1cm4gdmVyc2lvbjtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHZhciBtYXRjaCA9IHZlcnNpb24ubWF0Y2gocmVbQ09FUkNFXSk7XG5cbiAgaWYgKG1hdGNoID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHBhcnNlKChtYXRjaFsxXSB8fCAnMCcpICsgJy4nICsgKG1hdGNoWzJdIHx8ICcwJykgKyAnLicgKyAobWF0Y2hbM10gfHwgJzAnKSk7IFxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=","hasSourceURL":false,"isModule":false,"length":116014,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425101044,"metadata":{"connectionId":1,"message":{"command":"enableCustomBreakpoints","arguments":{"ids":[]},"type":"request","seq":7}},"level":0} {"tag":"dap.send","timestamp":1588425101044,"metadata":{"connectionId":1,"message":{"seq":299,"type":"response","request_seq":7,"command":"enableCustomBreakpoints","success":true,"body":{}}},"level":0} {"tag":"dap.send","timestamp":1588425101045,"metadata":{"connectionId":1,"message":{"seq":300,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101046,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/graceful-fs/legacy-streams.js","absolutePath":"/Users/roblou/code/vscode/node_modules/graceful-fs/legacy-streams.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101047,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/graceful-fs/clone.js","absolutePath":"/Users/roblou/code/vscode/node_modules/graceful-fs/clone.js"},"level":0} {"tag":"dap.send","timestamp":1588425101047,"metadata":{"connectionId":1,"message":{"seq":301,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/graceful-fs/legacy-streams.js","path":"/Users/roblou/code/vscode/node_modules/graceful-fs/legacy-streams.js","sourceReference":1412783697}}}},"level":0} {"tag":"dap.send","timestamp":1588425101048,"metadata":{"connectionId":1,"message":{"seq":302,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/graceful-fs/clone.js","path":"/Users/roblou/code/vscode/node_modules/graceful-fs/clone.js","sourceReference":1599798335}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101049,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/native-keymap/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/native-keymap/index.js"},"level":0} {"tag":"dap.send","timestamp":1588425101051,"metadata":{"connectionId":1,"message":{"seq":303,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/native-keymap/index.js","path":"/Users/roblou/code/vscode/node_modules/native-keymap/index.js","sourceReference":482513204}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101054,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/os.js"},"level":0} {"tag":"dap.send","timestamp":1588425101056,"metadata":{"connectionId":1,"message":{"seq":304,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/os.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/os.js","sourceReference":559180423}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101057,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/constants.js"},"level":0} {"tag":"dap.send","timestamp":1588425101059,"metadata":{"connectionId":1,"message":{"seq":305,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/constants.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/constants.js","sourceReference":1554119478}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101063,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/streams.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101063,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/net.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101064,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101065,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/net.js"},"level":0} {"tag":"dap.send","timestamp":1588425101066,"metadata":{"connectionId":1,"message":{"seq":306,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/streams.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/streams.js","sourceReference":806332466}}}},"level":0} {"tag":"dap.send","timestamp":1588425101066,"metadata":{"connectionId":1,"message":{"seq":307,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/net.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/net.js","sourceReference":1597780196}}}},"level":0} {"tag":"dap.send","timestamp":1588425101067,"metadata":{"connectionId":1,"message":{"seq":308,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js","sourceReference":124055498}}}},"level":0} {"tag":"dap.send","timestamp":1588425101067,"metadata":{"connectionId":1,"message":{"seq":309,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/net.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/net.js","sourceReference":1093680597}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101067,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js","absolutePath":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js"},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425101071,"message":"SourceMap: mapping webpack:///webpack/universalModuleDefinition => /Users/roblou/code/vscode/webpack/universalModuleDefinition, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101072,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///webpack/universalModuleDefinition","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VtdmVyL3NlbXZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsImEiLCJpIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJkZWJ1ZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0RFQlVHIiwidGVzdCIsImFyZ3MiLCJBcnJheSIsInNsaWNlIiwiYXJndW1lbnRzIiwidW5zaGlmdCIsImNvbnNvbGUiLCJsb2ciLCJhcHBseSIsIlNFTVZFUl9TUEVDX1ZFUlNJT04iLCJNQVhfTEVOR1RIIiwiTUFYX1NBRkVfSU5URUdFUiIsIk51bWJlciIsInJlIiwic3JjIiwiUiIsIk5VTUVSSUNJREVOVElGSUVSIiwiTlVNRVJJQ0lERU5USUZJRVJMT09TRSIsIk5PTk5VTUVSSUNJREVOVElGSUVSIiwiTUFJTlZFUlNJT04iLCJNQUlOVkVSU0lPTkxPT1NFIiwiUFJFUkVMRUFTRUlERU5USUZJRVIiLCJQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFIiwiUFJFUkVMRUFTRSIsIlBSRVJFTEVBU0VMT09TRSIsIkJVSUxESURFTlRJRklFUiIsIkJVSUxEIiwiRlVMTCIsIkZVTExQTEFJTiIsIkxPT1NFUExBSU4iLCJMT09TRSIsIkdUTFQiLCJYUkFOR0VJREVOVElGSUVSTE9PU0UiLCJYUkFOR0VJREVOVElGSUVSIiwiWFJBTkdFUExBSU4iLCJYUkFOR0VQTEFJTkxPT1NFIiwiWFJBTkdFIiwiWFJBTkdFTE9PU0UiLCJDT0VSQ0UiLCJMT05FVElMREUiLCJUSUxERVRSSU0iLCJSZWdFeHAiLCJUSUxERSIsIlRJTERFTE9PU0UiLCJMT05FQ0FSRVQiLCJDQVJFVFRSSU0iLCJDQVJFVCIsIkNBUkVUTE9PU0UiLCJDT01QQVJBVE9STE9PU0UiLCJDT01QQVJBVE9SIiwiQ09NUEFSQVRPUlRSSU0iLCJIWVBIRU5SQU5HRSIsIkhZUEhFTlJBTkdFTE9PU0UiLCJTVEFSIiwicGFyc2UiLCJ2ZXJzaW9uIiwibG9vc2UiLCJTZW1WZXIiLCJsZW5ndGgiLCJlciIsIlR5cGVFcnJvciIsInRyaW0iLCJtYXRjaCIsInJhdyIsIm1ham9yIiwibWlub3IiLCJwYXRjaCIsInByZXJlbGVhc2UiLCJzcGxpdCIsIm1hcCIsImlkIiwibnVtIiwiYnVpbGQiLCJmb3JtYXQiLCJ2YWxpZCIsInYiLCJjbGVhbiIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb21wYXJlIiwib3RoZXIiLCJjb21wYXJlTWFpbiIsImNvbXBhcmVQcmUiLCJjb21wYXJlSWRlbnRpZmllcnMiLCJiIiwidW5kZWZpbmVkIiwiaW5jIiwicmVsZWFzZSIsImlkZW50aWZpZXIiLCJwdXNoIiwiaXNOYU4iLCJFcnJvciIsImRpZmYiLCJ2ZXJzaW9uMSIsInZlcnNpb24yIiwiZXEiLCJ2MSIsInYyIiwibnVtZXJpYyIsImFudW0iLCJibnVtIiwiZ3QiLCJsdCIsIm5lcSIsImd0ZSIsImx0ZSIsImNtcCIsIm9wIiwicmV0IiwiQ29tcGFyYXRvciIsImNvbXAiLCJzZW12ZXIiLCJBTlkiLCJvcGVyYXRvciIsInJjb21wYXJlSWRlbnRpZmllcnMiLCJjb21wYXJlTG9vc2UiLCJyY29tcGFyZSIsInNvcnQiLCJsaXN0IiwicnNvcnQiLCJSYW5nZSIsInJhbmdlIiwic2V0IiwicGFyc2VSYW5nZSIsImZpbHRlciIsImlzWCIsInRvTG93ZXJDYXNlIiwiaHlwaGVuUmVwbGFjZSIsIiQwIiwiZnJvbSIsImZNIiwiZm0iLCJmcCIsImZwciIsImZiIiwidG8iLCJ0TSIsInRtIiwidHAiLCJ0cHIiLCJ0YiIsInRlc3RTZXQiLCJhbGxvd2VkIiwic2F0aXNmaWVzIiwib3V0c2lkZSIsImhpbG8iLCJndGZuIiwibHRlZm4iLCJsdGZuIiwiZWNvbXAiLCJjb21wYXJhdG9ycyIsImhpZ2giLCJsb3ciLCJmb3JFYWNoIiwiY29tcGFyYXRvciIsImludGVyc2VjdHMiLCJyYW5nZVRtcCIsInNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIiwic2FtZURpcmVjdGlvbkRlY3JlYXNpbmciLCJzYW1lU2VtVmVyIiwiZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSIsIm9wcG9zaXRlRGlyZWN0aW9uc0xlc3NUaGFuIiwib3Bwb3NpdGVEaXJlY3Rpb25zR3JlYXRlclRoYW4iLCJjb21wcyIsImhyIiwiY29tcFJlIiwiXyIsIk0iLCJwciIsImNoYXJBdCIsInJlcGxhY2VDYXJldCIsInJlcGxhY2VDYXJldHMiLCJyZXBsYWNlVGlsZGUiLCJyZXBsYWNlVGlsZGVzIiwiZ3RsdCIsInhNIiwieG0iLCJ4cCIsInJlcGxhY2VYUmFuZ2UiLCJyZXBsYWNlWFJhbmdlcyIsInJlcGxhY2VTdGFycyIsInBhcnNlQ29tcGFyYXRvciIsInNvbWUiLCJ0aGlzQ29tcGFyYXRvcnMiLCJldmVyeSIsInRoaXNDb21wYXJhdG9yIiwicmFuZ2VDb21wYXJhdG9ycyIsInJhbmdlQ29tcGFyYXRvciIsInRvQ29tcGFyYXRvcnMiLCJtYXhTYXRpc2Z5aW5nIiwidmVyc2lvbnMiLCJtYXgiLCJtYXhTViIsInJhbmdlT2JqIiwibWluU2F0aXNmeWluZyIsIm1pbiIsIm1pblNWIiwidmFsaWRSYW5nZSIsImx0ciIsImd0ciIsInBhcnNlZCIsInIxIiwicjIiLCJjb2VyY2UiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImUiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImNvbmNhdCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibGVuIiwicnVuIiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsImFycmF5Iiwibm9vcCIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiYXJndiIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDaEQsR0FBc0IsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsU0FDYixHQUFxQixtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILE9BQ1AsQ0FDSixJQUFJSyxFQUFJTCxJQUNSLElBQUksSUFBSU0sS0FBS0QsR0FBdUIsaUJBQVpKLFFBQXVCQSxRQUFVRixHQUFNTyxHQUFLRCxFQUFFQyxJQVB4RSxDQVNtQixvQkFBVEMsS0FBdUJBLEtBQU9DLE1BQU0sV0FDOUMsTyxZQ1RFLElBQUlDLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FB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QUFVN0MsR0FHaENnUSxFQUFNN0gsS0FBSyxJQUFJd0ksRUFBS2hCLEVBQUtqTixJQUNKLElBQWpCc04sRUFBTTdKLFFBQWlCOEosR0FDdkJQLEVBQVdXLElBU25CTSxFQUFLMU8sVUFBVXVPLElBQU0sV0FDakJ0USxLQUFLeVAsSUFBSTFNLE1BQU0sS0FBTS9DLEtBQUswUSxRQUU5QnRPLEVBQVF5TyxNQUFRLFVBQ2hCek8sRUFBUTBPLFNBQVUsRUFDbEIxTyxFQUFRQyxJQUFNLEdBQ2RELEVBQVEyTyxLQUFPLEdBQ2YzTyxFQUFRMEQsUUFBVSxHQUNsQjFELEVBQVFrTSxTQUFXLEdBSW5CbE0sRUFBUTRPLEdBQUtMLEVBQ2J2TyxFQUFRNk8sWUFBY04sRUFDdEJ2TyxFQUFROE8sS0FBT1AsRUFDZnZPLEVBQVErTyxJQUFNUixFQUNkdk8sRUFBUWdQLGVBQWlCVCxFQUN6QnZPLEVBQVFpUCxtQkFBcUJWLEVBQzdCdk8sRUFBUWtQLEtBQU9YLEVBQ2Z2TyxFQUFRbVAsZ0JBQWtCWixFQUMxQnZPLEVBQVFvUCxvQkFBc0JiLEVBRTlCdk8sRUFBUXFQLFVBQVksU0FBVS9RLEdBQVEsTUFBTyxJQUU3QzBCLEVBQVFzUCxRQUFVLFNBQVVoUixHQUN4QixNQUFNLElBQUl5SCxNQUFNLHFDQUdwQi9GLEVBQVF1UCxJQUFNLFdBQWMsTUFBTyxLQUNuQ3ZQLEVBQVF3UCxNQUFRLFNBQVVDLEdBQ3RCLE1BQU0sSUFBSTFKLE1BQU0sbUNBRXBCL0YsRUFBUTBQLE1BQVEsV0FBYSxPQUFPIiwiZmlsZSI6InNlbXZlci11bWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IFNlbVZlcjtcblxuLy8gVGhlIGRlYnVnIGZ1bmN0aW9uIGlzIGV4Y2x1ZGVkIGVudGlyZWx5IGZyb20gdGhlIG1pbmlmaWVkIHZlcnNpb24uXG4vKiBub21pbiAqLyB2YXIgZGVidWc7XG4vKiBub21pbiAqLyBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmXG4gICAgLyogbm9taW4gKi8gcHJvY2Vzcy5lbnYgJiZcbiAgICAvKiBub21pbiAqLyBwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmXG4gICAgLyogbm9taW4gKi8gL1xcYnNlbXZlclxcYi9pLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRykpXG4gIC8qIG5vbWluICovIGRlYnVnID0gZnVuY3Rpb24oKSB7XG4gICAgLyogbm9taW4gKi8gdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIC8qIG5vbWluICovIGFyZ3MudW5zaGlmdCgnU0VNVkVSJyk7XG4gICAgLyogbm9taW4gKi8gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gICAgLyogbm9taW4gKi8gfTtcbi8qIG5vbWluICovIGVsc2VcbiAgLyogbm9taW4gKi8gZGVidWcgPSBmdW5jdGlvbigpIHt9O1xuXG4vLyBOb3RlOiB0aGlzIGlzIHRoZSBzZW12ZXIub3JnIHZlcnNpb24gb2YgdGhlIHNwZWMgdGhhdCBpdCBpbXBsZW1lbnRzXG4vLyBOb3QgbmVjZXNzYXJpbHkgdGhlIHBhY2thZ2UgdmVyc2lvbiBvZiB0aGlzIGNvZGUuXG5leHBvcnRzLlNFTVZFUl9TUEVDX1ZFUlNJT04gPSAnMi4wLjAnO1xuXG52YXIgTUFYX0xFTkdUSCA9IDI1NjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgOTAwNzE5OTI1NDc0MDk5MTtcblxuLy8gTWF4IHNhZmUgc2VnbWVudCBsZW5ndGggZm9yIGNvZXJjaW9uLlxudmFyIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggPSAxNjtcblxuLy8gVGhlIGFjdHVhbCByZWdleHBzIGdvIG9uIGV4cG9ydHMucmVcbnZhciByZSA9IGV4cG9ydHMucmUgPSBbXTtcbnZhciBzcmMgPSBleHBvcnRzLnNyYyA9IFtdO1xudmFyIFIgPSAwO1xuXG4vLyBUaGUgZm9sbG93aW5nIFJlZ3VsYXIgRXhwcmVzc2lvbnMgY2FuIGJlIHVzZWQgZm9yIHRva2VuaXppbmcsXG4vLyB2YWxpZGF0aW5nLCBhbmQgcGFyc2luZyBTZW1WZXIgdmVyc2lvbiBzdHJpbmdzLlxuXG4vLyAjIyBOdW1lcmljIElkZW50aWZpZXJcbi8vIEEgc2luZ2xlIGAwYCwgb3IgYSBub24temVybyBkaWdpdCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgZGlnaXRzLlxuXG52YXIgTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJdID0gJzB8WzEtOV1cXFxcZConO1xudmFyIE5VTUVSSUNJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gPSAnWzAtOV0rJztcblxuXG4vLyAjIyBOb24tbnVtZXJpYyBJZGVudGlmaWVyXG4vLyBaZXJvIG9yIG1vcmUgZGlnaXRzLCBmb2xsb3dlZCBieSBhIGxldHRlciBvciBoeXBoZW4sIGFuZCB0aGVuIHplcm8gb3Jcbi8vIG1vcmUgbGV0dGVycywgZGlnaXRzLCBvciBoeXBoZW5zLlxuXG52YXIgTk9OTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTk9OTlVNRVJJQ0lERU5USUZJRVJdID0gJ1xcXFxkKlthLXpBLVotXVthLXpBLVowLTktXSonO1xuXG5cbi8vICMjIE1haW4gVmVyc2lvblxuLy8gVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuXG52YXIgTUFJTlZFUlNJT04gPSBSKys7XG5zcmNbTUFJTlZFUlNJT05dID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSXSArICcpXFxcXC4nICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICcoJyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBNQUlOVkVSU0lPTkxPT1NFID0gUisrO1xuc3JjW01BSU5WRVJTSU9OTE9PU0VdID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJyknO1xuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uIElkZW50aWZpZXJcbi8vIEEgbnVtZXJpYyBpZGVudGlmaWVyLCBvciBhIG5vbi1udW1lcmljIGlkZW50aWZpZXIuXG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUiA9IFIrKztcbnNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gPSAnKD86JyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd8JyArIHNyY1tOT05OVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdID0gJyg/OicgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgc3JjW05PTk5VTUVSSUNJREVOVElGSUVSXSArICcpJztcblxuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uXG4vLyBIeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvblxuLy8gaWRlbnRpZmllcnMuXG5cbnZhciBQUkVSRUxFQVNFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VdID0gJyg/Oi0oJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gKyAnKSopKSc7XG5cbnZhciBQUkVSRUxFQVNFTE9PU0UgPSBSKys7XG5zcmNbUFJFUkVMRUFTRUxPT1NFXSA9ICcoPzotPygnICsgc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdICtcbiAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXSArICcpKikpJztcblxuLy8gIyMgQnVpbGQgTWV0YWRhdGEgSWRlbnRpZmllclxuLy8gQW55IGNvbWJpbmF0aW9uIG9mIGRpZ2l0cywgbGV0dGVycywgb3IgaHlwaGVucy5cblxudmFyIEJVSUxESURFTlRJRklFUiA9IFIrKztcbnNyY1tCVUlMRElERU5USUZJRVJdID0gJ1swLTlBLVphLXotXSsnO1xuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YVxuLy8gUGx1cyBzaWduLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwZXJpb2Qtc2VwYXJhdGVkIGJ1aWxkIG1ldGFkYXRhXG4vLyBpZGVudGlmaWVycy5cblxudmFyIEJVSUxEID0gUisrO1xuc3JjW0JVSUxEXSA9ICcoPzpcXFxcKygnICsgc3JjW0JVSUxESURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICcoPzpcXFxcLicgKyBzcmNbQlVJTERJREVOVElGSUVSXSArICcpKikpJztcblxuXG4vLyAjIyBGdWxsIFZlcnNpb24gU3RyaW5nXG4vLyBBIG1haW4gdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kXG4vLyBidWlsZCBtZXRhZGF0YS5cblxuLy8gTm90ZSB0aGF0IHRoZSBvbmx5IG1ham9yLCBtaW5vciwgcGF0Y2gsIGFuZCBwcmUtcmVsZWFzZSBzZWN0aW9ucyBvZlxuLy8gdGhlIHZlcnNpb24gc3RyaW5nIGFyZSBjYXB0dXJpbmcgZ3JvdXBzLiAgVGhlIGJ1aWxkIG1ldGFkYXRhIGlzIG5vdCBhXG4vLyBjYXB0dXJpbmcgZ3JvdXAsIGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBldmVyIGJlIHVzZWQgaW4gdmVyc2lvblxuLy8gY29tcGFyaXNvbi5cblxudmFyIEZVTEwgPSBSKys7XG52YXIgRlVMTFBMQUlOID0gJ3Y/JyArIHNyY1tNQUlOVkVSU0lPTl0gK1xuICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFXSArICc/JyArXG4gICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/Jztcblxuc3JjW0ZVTExdID0gJ14nICsgRlVMTFBMQUlOICsgJyQnO1xuXG4vLyBsaWtlIGZ1bGwsIGJ1dCBhbGxvd3MgdjEuMi4zIGFuZCA9MS4yLjMsIHdoaWNoIHBlb3BsZSBkbyBzb21ldGltZXMuXG4vLyBhbHNvLCAxLjAuMGFscGhhMSAocHJlcmVsZWFzZSB3aXRob3V0IHRoZSBoeXBoZW4pIHdoaWNoIGlzIHByZXR0eVxuLy8gY29tbW9uIGluIHRoZSBucG0gcmVnaXN0cnkuXG52YXIgTE9PU0VQTEFJTiA9ICdbdj1cXFxcc10qJyArIHNyY1tNQUlOVkVSU0lPTkxPT1NFXSArXG4gICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/JztcblxudmFyIExPT1NFID0gUisrO1xuc3JjW0xPT1NFXSA9ICdeJyArIExPT1NFUExBSU4gKyAnJCc7XG5cbnZhciBHVExUID0gUisrO1xuc3JjW0dUTFRdID0gJygoPzo8fD4pPz0/KSc7XG5cbi8vIFNvbWV0aGluZyBsaWtlIFwiMi4qXCIgb3IgXCIxLjIueFwiLlxuLy8gTm90ZSB0aGF0IFwieC54XCIgaXMgYSB2YWxpZCB4UmFuZ2UgaWRlbnRpZmVyLCBtZWFuaW5nIFwiYW55IHZlcnNpb25cIlxuLy8gT25seSB0aGUgZmlyc3QgaXRlbSBpcyBzdHJpY3RseSByZXF1aXJlZC5cbnZhciBYUkFOR0VJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSA9IHNyY1tOVU1FUklDSURFTlRJRklFUkxPT1NFXSArICd8eHxYfFxcXFwqJztcbnZhciBYUkFOR0VJREVOVElGSUVSID0gUisrO1xuc3JjW1hSQU5HRUlERU5USUZJRVJdID0gc3JjW05VTUVSSUNJREVOVElGSUVSXSArICd8eHxYfFxcXFwqJztcblxudmFyIFhSQU5HRVBMQUlOID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOXSA9ICdbdj1cXFxcc10qKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUl0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnKD86XFxcXC4oJyArIHNyY1tYUkFOR0VJREVOVElGSUVSXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJyg/OicgKyBzcmNbUFJFUkVMRUFTRV0gKyAnKT8nICtcbiAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAnKT8pPyc7XG5cbnZhciBYUkFOR0VQTEFJTkxPT1NFID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOTE9PU0VdID0gJ1t2PVxcXFxzXSooJyArIHNyY1tYUkFOR0VJREVOVElGSUVSTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJMT09TRV0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKD86JyArIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJyk/JyArXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcpPyk/JztcblxudmFyIFhSQU5HRSA9IFIrKztcbnNyY1tYUkFOR0VdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKicgKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFhSQU5HRUxPT1NFID0gUisrO1xuc3JjW1hSQU5HRUxPT1NFXSA9ICdeJyArIHNyY1tHVExUXSArICdcXFxccyonICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyQnO1xuXG4vLyBDb2VyY2lvbi5cbi8vIEV4dHJhY3QgYW55dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSBhIHBhcnQgb2YgYSB2YWxpZCBzZW12ZXJcbnZhciBDT0VSQ0UgPSBSKys7XG5zcmNbQ09FUkNFXSA9ICcoPzpefFteXFxcXGRdKScgK1xuICAgICAgICAgICAgICAnKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSknICtcbiAgICAgICAgICAgICAgJyg/OlxcXFwuKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSkpPycgK1xuICAgICAgICAgICAgICAnKD86XFxcXC4oXFxcXGR7MSwnICsgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSCArICd9KSk/JyArXG4gICAgICAgICAgICAgICcoPzokfFteXFxcXGRdKSc7XG5cbi8vIFRpbGRlIHJhbmdlcy5cbi8vIE1lYW5pbmcgaXMgXCJyZWFzb25hYmx5IGF0IG9yIGdyZWF0ZXIgdGhhblwiXG52YXIgTE9ORVRJTERFID0gUisrO1xuc3JjW0xPTkVUSUxERV0gPSAnKD86fj4/KSc7XG5cbnZhciBUSUxERVRSSU0gPSBSKys7XG5zcmNbVElMREVUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbTE9ORVRJTERFXSArICdcXFxccysnO1xucmVbVElMREVUUklNXSA9IG5ldyBSZWdFeHAoc3JjW1RJTERFVFJJTV0sICdnJyk7XG52YXIgdGlsZGVUcmltUmVwbGFjZSA9ICckMX4nO1xuXG52YXIgVElMREUgPSBSKys7XG5zcmNbVElMREVdID0gJ14nICsgc3JjW0xPTkVUSUxERV0gKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFRJTERFTE9PU0UgPSBSKys7XG5zcmNbVElMREVMT09TRV0gPSAnXicgKyBzcmNbTE9ORVRJTERFXSArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICckJztcblxuLy8gQ2FyZXQgcmFuZ2VzLlxuLy8gTWVhbmluZyBpcyBcImF0IGxlYXN0IGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoXCJcbnZhciBMT05FQ0FSRVQgPSBSKys7XG5zcmNbTE9ORUNBUkVUXSA9ICcoPzpcXFxcXiknO1xuXG52YXIgQ0FSRVRUUklNID0gUisrO1xuc3JjW0NBUkVUVFJJTV0gPSAnKFxcXFxzKiknICsgc3JjW0xPTkVDQVJFVF0gKyAnXFxcXHMrJztcbnJlW0NBUkVUVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDQVJFVFRSSU1dLCAnZycpO1xudmFyIGNhcmV0VHJpbVJlcGxhY2UgPSAnJDFeJztcblxudmFyIENBUkVUID0gUisrO1xuc3JjW0NBUkVUXSA9ICdeJyArIHNyY1tMT05FQ0FSRVRdICsgc3JjW1hSQU5HRVBMQUlOXSArICckJztcbnZhciBDQVJFVExPT1NFID0gUisrO1xuc3JjW0NBUkVUTE9PU0VdID0gJ14nICsgc3JjW0xPTkVDQVJFVF0gKyBzcmNbWFJBTkdFUExBSU5MT09TRV0gKyAnJCc7XG5cbi8vIEEgc2ltcGxlIGd0L2x0L2VxIHRoaW5nLCBvciBqdXN0IFwiXCIgdG8gaW5kaWNhdGUgXCJhbnkgdmVyc2lvblwiXG52YXIgQ09NUEFSQVRPUkxPT1NFID0gUisrO1xuc3JjW0NPTVBBUkFUT1JMT09TRV0gPSAnXicgKyBzcmNbR1RMVF0gKyAnXFxcXHMqKCcgKyBMT09TRVBMQUlOICsgJykkfF4kJztcbnZhciBDT01QQVJBVE9SID0gUisrO1xuc3JjW0NPTVBBUkFUT1JdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKignICsgRlVMTFBMQUlOICsgJykkfF4kJztcblxuXG4vLyBBbiBleHByZXNzaW9uIHRvIHN0cmlwIGFueSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIGd0bHQgYW5kIHRoZSB0aGluZ1xuLy8gaXQgbW9kaWZpZXMsIHNvIHRoYXQgYD4gMS4yLjNgID09PiBgPjEuMi4zYFxudmFyIENPTVBBUkFUT1JUUklNID0gUisrO1xuc3JjW0NPTVBBUkFUT1JUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbR1RMVF0gK1xuICAgICAgICAgICAgICAgICAgICAgICdcXFxccyooJyArIExPT1NFUExBSU4gKyAnfCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknO1xuXG4vLyB0aGlzIG9uZSBoYXMgdG8gdXNlIHRoZSAvZyBmbGFnXG5yZVtDT01QQVJBVE9SVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDT01QQVJBVE9SVFJJTV0sICdnJyk7XG52YXIgY29tcGFyYXRvclRyaW1SZXBsYWNlID0gJyQxJDIkMyc7XG5cblxuLy8gU29tZXRoaW5nIGxpa2UgYDEuMi4zIC0gMS4yLjRgXG4vLyBOb3RlIHRoYXQgdGhlc2UgYWxsIHVzZSB0aGUgbG9vc2UgZm9ybSwgYmVjYXVzZSB0aGV5J2xsIGJlXG4vLyBjaGVja2VkIGFnYWluc3QgZWl0aGVyIHRoZSBzdHJpY3Qgb3IgbG9vc2UgY29tcGFyYXRvciBmb3JtXG4vLyBsYXRlci5cbnZhciBIWVBIRU5SQU5HRSA9IFIrKztcbnNyY1tIWVBIRU5SQU5HRV0gPSAnXlxcXFxzKignICsgc3JjW1hSQU5HRVBMQUlOXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJ1xcXFxzKy1cXFxccysnICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnXFxcXHMqJCc7XG5cbnZhciBIWVBIRU5SQU5HRUxPT1NFID0gUisrO1xuc3JjW0hZUEhFTlJBTkdFTE9PU0VdID0gJ15cXFxccyooJyArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxcXHMrLVxcXFxzKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXFxccyokJztcblxuLy8gU3RhciByYW5nZXMgYmFzaWNhbGx5IGp1c3QgYWxsb3cgYW55dGhpbmcgYXQgYWxsLlxudmFyIFNUQVIgPSBSKys7XG5zcmNbU1RBUl0gPSAnKDx8Pik/PT9cXFxccypcXFxcKic7XG5cbi8vIENvbXBpbGUgdG8gYWN0dWFsIHJlZ2V4cCBvYmplY3RzLlxuLy8gQWxsIGFyZSBmbGFnLWZyZWUsIHVubGVzcyB0aGV5IHdlcmUgY3JlYXRlZCBhYm92ZSB3aXRoIGEgZmxhZy5cbmZvciAodmFyIGkgPSAwOyBpIDwgUjsgaSsrKSB7XG4gIGRlYnVnKGksIHNyY1tpXSk7XG4gIGlmICghcmVbaV0pXG4gICAgcmVbaV0gPSBuZXcgUmVnRXhwKHNyY1tpXSk7XG59XG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmZ1bmN0aW9uIHBhcnNlKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKVxuICAgIHJldHVybiB2ZXJzaW9uO1xuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgaWYgKHZlcnNpb24ubGVuZ3RoID4gTUFYX0xFTkdUSClcbiAgICByZXR1cm4gbnVsbDtcblxuICB2YXIgciA9IGxvb3NlID8gcmVbTE9PU0VdIDogcmVbRlVMTF07XG4gIGlmICghci50ZXN0KHZlcnNpb24pKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydHMudmFsaWQgPSB2YWxpZDtcbmZ1bmN0aW9uIHZhbGlkKHZlcnNpb24sIGxvb3NlKSB7XG4gIHZhciB2ID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gdiA/IHYudmVyc2lvbiA6IG51bGw7XG59XG5cblxuZXhwb3J0cy5jbGVhbiA9IGNsZWFuO1xuZnVuY3Rpb24gY2xlYW4odmVyc2lvbiwgbG9vc2UpIHtcbiAgdmFyIHMgPSBwYXJzZSh2ZXJzaW9uLnRyaW0oKS5yZXBsYWNlKC9eWz12XSsvLCAnJyksIGxvb3NlKTtcbiAgcmV0dXJuIHMgPyBzLnZlcnNpb24gOiBudWxsO1xufVxuXG5leHBvcnRzLlNlbVZlciA9IFNlbVZlcjtcblxuZnVuY3Rpb24gU2VtVmVyKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKSB7XG4gICAgaWYgKHZlcnNpb24ubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgZWxzZVxuICAgICAgdmVyc2lvbiA9IHZlcnNpb24udmVyc2lvbjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmVyc2lvbiBpcyBsb25nZXIgdGhhbiAnICsgTUFYX0xFTkdUSCArICcgY2hhcmFjdGVycycpXG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuXG4gIGRlYnVnKCdTZW1WZXInLCB2ZXJzaW9uLCBsb29zZSk7XG4gIHRoaXMubG9vc2UgPSBsb29zZTtcbiAgdmFyIG0gPSB2ZXJzaW9uLnRyaW0oKS5tYXRjaChsb29zZSA/IHJlW0xPT1NFXSA6IHJlW0ZVTExdKTtcblxuICBpZiAoIW0pXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBWZXJzaW9uOiAnICsgdmVyc2lvbik7XG5cbiAgdGhpcy5yYXcgPSB2ZXJzaW9uO1xuXG4gIC8vIHRoZXNlIGFyZSBhY3R1YWxseSBudW1iZXJzXG4gIHRoaXMubWFqb3IgPSArbVsxXTtcbiAgdGhpcy5taW5vciA9ICttWzJdO1xuICB0aGlzLnBhdGNoID0gK21bM107XG5cbiAgaWYgKHRoaXMubWFqb3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWFqb3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWFqb3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMubWlub3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWlub3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWlub3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMucGF0Y2ggPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMucGF0Y2ggPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgcGF0Y2ggdmVyc2lvbicpXG5cbiAgLy8gbnVtYmVyaWZ5IGFueSBwcmVyZWxlYXNlIG51bWVyaWMgaWRzXG4gIGlmICghbVs0XSlcbiAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgZWxzZVxuICAgIHRoaXMucHJlcmVsZWFzZSA9IG1bNF0uc3BsaXQoJy4nKS5tYXAoZnVuY3Rpb24oaWQpIHtcbiAgICAgIGlmICgvXlswLTldKyQvLnRlc3QoaWQpKSB7XG4gICAgICAgIHZhciBudW0gPSAraWQ7XG4gICAgICAgIGlmIChudW0gPj0gMCAmJiBudW0gPCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICAgIHJldHVybiBudW07XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG5cbiAgdGhpcy5idWlsZCA9IG1bNV0gPyBtWzVdLnNwbGl0KCcuJykgOiBbXTtcbiAgdGhpcy5mb3JtYXQoKTtcbn1cblxuU2VtVmVyLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy52ZXJzaW9uID0gdGhpcy5tYWpvciArICcuJyArIHRoaXMubWlub3IgKyAnLicgKyB0aGlzLnBhdGNoO1xuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICB0aGlzLnZlcnNpb24gKz0gJy0nICsgdGhpcy5wcmVyZWxlYXNlLmpvaW4oJy4nKTtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGRlYnVnKCdTZW1WZXIuY29tcGFyZScsIHRoaXMudmVyc2lvbiwgdGhpcy5sb29zZSwgb3RoZXIpO1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gdGhpcy5jb21wYXJlTWFpbihvdGhlcikgfHwgdGhpcy5jb21wYXJlUHJlKG90aGVyKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZU1haW4gPSBmdW5jdGlvbihvdGhlcikge1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWFqb3IsIG90aGVyLm1ham9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWlub3IsIG90aGVyLm1pbm9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMucGF0Y2gsIG90aGVyLnBhdGNoKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZVByZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSlcbiAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMubG9vc2UpO1xuXG4gIC8vIE5PVCBoYXZpbmcgYSBwcmVyZWxlYXNlIGlzID4gaGF2aW5nIG9uZVxuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpXG4gICAgcmV0dXJuIC0xO1xuICBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiBvdGhlci5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICByZXR1cm4gMTtcbiAgZWxzZSBpZiAoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGggJiYgIW90aGVyLnByZXJlbGVhc2UubGVuZ3RoKVxuICAgIHJldHVybiAwO1xuXG4gIHZhciBpID0gMDtcbiAgZG8ge1xuICAgIHZhciBhID0gdGhpcy5wcmVyZWxlYXNlW2ldO1xuICAgIHZhciBiID0gb3RoZXIucHJlcmVsZWFzZVtpXTtcbiAgICBkZWJ1ZygncHJlcmVsZWFzZSBjb21wYXJlJywgaSwgYSwgYik7XG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMDtcbiAgICBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChhID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gLTE7XG4gICAgZWxzZSBpZiAoYSA9PT0gYilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYik7XG4gIH0gd2hpbGUgKCsraSk7XG59O1xuXG4vLyBwcmVtaW5vciB3aWxsIGJ1bXAgdGhlIHZlcnNpb24gdXAgdG8gdGhlIG5leHQgbWlub3IgcmVsZWFzZSwgYW5kIGltbWVkaWF0ZWx5XG4vLyBkb3duIHRvIHByZS1yZWxlYXNlLiBwcmVtYWpvciBhbmQgcHJlcGF0Y2ggd29yayB0aGUgc2FtZSB3YXkuXG5TZW1WZXIucHJvdG90eXBlLmluYyA9IGZ1bmN0aW9uKHJlbGVhc2UsIGlkZW50aWZpZXIpIHtcbiAgc3dpdGNoIChyZWxlYXNlKSB7XG4gICAgY2FzZSAncHJlbWFqb3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IgPSAwO1xuICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncHJlbWlub3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ByZXBhdGNoJzpcbiAgICAgIC8vIElmIHRoaXMgaXMgYWxyZWFkeSBhIHByZXJlbGVhc2UsIGl0IHdpbGwgYnVtcCB0byB0aGUgbmV4dCB2ZXJzaW9uXG4gICAgICAvLyBkcm9wIGFueSBwcmVyZWxlYXNlcyB0aGF0IG1pZ2h0IGFscmVhZHkgZXhpc3QsIHNpbmNlIHRoZXkgYXJlIG5vdFxuICAgICAgLy8gcmVsZXZhbnQgYXQgdGhpcyBwb2ludC5cbiAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllcik7XG4gICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllcik7XG4gICAgICBicmVhaztcbiAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYSBub24tcHJlcmVsZWFzZSB2ZXJzaW9uLCB0aGlzIGFjdHMgdGhlIHNhbWUgYXNcbiAgICAvLyBwcmVwYXRjaC5cbiAgICBjYXNlICdwcmVyZWxlYXNlJzpcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLmluYygncGF0Y2gnLCBpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWFqb3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1tYWpvciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1ham9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1ham9yLlxuICAgICAgLy8gMS4wLjAtNSBidW1wcyB0byAxLjAuMFxuICAgICAgLy8gMS4xLjAgYnVtcHMgdG8gMi4wLjBcbiAgICAgIGlmICh0aGlzLm1pbm9yICE9PSAwIHx8IHRoaXMucGF0Y2ggIT09IDAgfHwgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5taW5vciA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWlub3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1taW5vciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1pbm9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1pbm9yLlxuICAgICAgLy8gMS4yLjAtNSBidW1wcyB0byAxLjIuMFxuICAgICAgLy8gMS4yLjEgYnVtcHMgdG8gMS4zLjBcbiAgICAgIGlmICh0aGlzLnBhdGNoICE9PSAwIHx8IHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApXG4gICAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMucGF0Y2ggPSAwO1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW107XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYXRjaCc6XG4gICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHByZS1yZWxlYXNlIHZlcnNpb24sIGl0IHdpbGwgaW5jcmVtZW50IHRoZSBwYXRjaC5cbiAgICAgIC8vIElmIGl0IGlzIGEgcHJlLXJlbGVhc2UgaXQgd2lsbCBidW1wIHVwIHRvIHRoZSBzYW1lIHBhdGNoIHZlcnNpb24uXG4gICAgICAvLyAxLjIuMC01IHBhdGNoZXMgdG8gMS4yLjBcbiAgICAgIC8vIDEuMi4wIHBhdGNoZXMgdG8gMS4yLjFcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLnBhdGNoKys7XG4gICAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgICAgIGJyZWFrO1xuICAgIC8vIFRoaXMgcHJvYmFibHkgc2hvdWxkbid0IGJlIHVzZWQgcHVibGljbHkuXG4gICAgLy8gMS4wLjAgXCJwcmVcIiB3b3VsZCBiZWNvbWUgMS4wLjAtMCB3aGljaCBpcyB0aGUgd3JvbmcgZGlyZWN0aW9uLlxuICAgIGNhc2UgJ3ByZSc6XG4gICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5wcmVyZWxlYXNlLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXJlbGVhc2VbaV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2VbaV0rKztcbiAgICAgICAgICAgIGkgPSAtMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IC0xKSAvLyBkaWRuJ3QgaW5jcmVtZW50IGFueXRoaW5nXG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLnB1c2goMCk7XG4gICAgICB9XG4gICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAvLyAxLjIuMC1iZXRhLjEgYnVtcHMgdG8gMS4yLjAtYmV0YS4yLFxuICAgICAgICAvLyAxLjIuMC1iZXRhLmZvb2JseiBvciAxLjIuMC1iZXRhIGJ1bXBzIHRvIDEuMi4wLWJldGEuMFxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlWzBdID09PSBpZGVudGlmaWVyKSB7XG4gICAgICAgICAgaWYgKGlzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkpXG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbaWRlbnRpZmllciwgMF07XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtpZGVudGlmaWVyLCAwXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpbmNyZW1lbnQgYXJndW1lbnQ6ICcgKyByZWxlYXNlKTtcbiAgfVxuICB0aGlzLmZvcm1hdCgpO1xuICB0aGlzLnJhdyA9IHRoaXMudmVyc2lvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5leHBvcnRzLmluYyA9IGluYztcbmZ1bmN0aW9uIGluYyh2ZXJzaW9uLCByZWxlYXNlLCBsb29zZSwgaWRlbnRpZmllcikge1xuICBpZiAodHlwZW9mKGxvb3NlKSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZGVudGlmaWVyID0gbG9vc2U7XG4gICAgbG9vc2UgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKS5pbmMocmVsZWFzZSwgaWRlbnRpZmllcikudmVyc2lvbjtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnRzLmRpZmYgPSBkaWZmO1xuZnVuY3Rpb24gZGlmZih2ZXJzaW9uMSwgdmVyc2lvbjIpIHtcbiAgaWYgKGVxKHZlcnNpb24xLCB2ZXJzaW9uMikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdjEgPSBwYXJzZSh2ZXJzaW9uMSk7XG4gICAgdmFyIHYyID0gcGFyc2UodmVyc2lvbjIpO1xuICAgIGlmICh2MS5wcmVyZWxlYXNlLmxlbmd0aCB8fCB2Mi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdtYWpvcicgfHwga2V5ID09PSAnbWlub3InIHx8IGtleSA9PT0gJ3BhdGNoJykge1xuICAgICAgICAgIGlmICh2MVtrZXldICE9PSB2MltrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ByZScra2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICdwcmVyZWxlYXNlJztcbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICBpZiAoa2V5ID09PSAnbWFqb3InIHx8IGtleSA9PT0gJ21pbm9yJyB8fCBrZXkgPT09ICdwYXRjaCcpIHtcbiAgICAgICAgaWYgKHYxW2tleV0gIT09IHYyW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuY29tcGFyZUlkZW50aWZpZXJzID0gY29tcGFyZUlkZW50aWZpZXJzO1xuXG52YXIgbnVtZXJpYyA9IC9eWzAtOV0rJC87XG5mdW5jdGlvbiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYikge1xuICB2YXIgYW51bSA9IG51bWVyaWMudGVzdChhKTtcbiAgdmFyIGJudW0gPSBudW1lcmljLnRlc3QoYik7XG5cbiAgaWYgKGFudW0gJiYgYm51bSkge1xuICAgIGEgPSArYTtcbiAgICBiID0gK2I7XG4gIH1cblxuICByZXR1cm4gKGFudW0gJiYgIWJudW0pID8gLTEgOlxuICAgICAgICAgKGJudW0gJiYgIWFudW0pID8gMSA6XG4gICAgICAgICBhIDwgYiA/IC0xIDpcbiAgICAgICAgIGEgPiBiID8gMSA6XG4gICAgICAgICAwO1xufVxuXG5leHBvcnRzLnJjb21wYXJlSWRlbnRpZmllcnMgPSByY29tcGFyZUlkZW50aWZpZXJzO1xuZnVuY3Rpb24gcmNvbXBhcmVJZGVudGlmaWVycyhhLCBiKSB7XG4gIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYiwgYSk7XG59XG5cbmV4cG9ydHMubWFqb3IgPSBtYWpvcjtcbmZ1bmN0aW9uIG1ham9yKGEsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5tYWpvcjtcbn1cblxuZXhwb3J0cy5taW5vciA9IG1pbm9yO1xuZnVuY3Rpb24gbWlub3IoYSwgbG9vc2UpIHtcbiAgcmV0dXJuIG5ldyBTZW1WZXIoYSwgbG9vc2UpLm1pbm9yO1xufVxuXG5leHBvcnRzLnBhdGNoID0gcGF0Y2g7XG5mdW5jdGlvbiBwYXRjaChhLCBsb29zZSkge1xuICByZXR1cm4gbmV3IFNlbVZlcihhLCBsb29zZSkucGF0Y2g7XG59XG5cbmV4cG9ydHMuY29tcGFyZSA9IGNvbXBhcmU7XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5jb21wYXJlKG5ldyBTZW1WZXIoYiwgbG9vc2UpKTtcbn1cblxuZXhwb3J0cy5jb21wYXJlTG9vc2UgPSBjb21wYXJlTG9vc2U7XG5mdW5jdGlvbiBjb21wYXJlTG9vc2UoYSwgYikge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCB0cnVlKTtcbn1cblxuZXhwb3J0cy5yY29tcGFyZSA9IHJjb21wYXJlO1xuZnVuY3Rpb24gcmNvbXBhcmUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYiwgYSwgbG9vc2UpO1xufVxuXG5leHBvcnRzLnNvcnQgPSBzb3J0O1xuZnVuY3Rpb24gc29ydChsaXN0LCBsb29zZSkge1xuICByZXR1cm4gbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5jb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMucnNvcnQgPSByc29ydDtcbmZ1bmN0aW9uIHJzb3J0KGxpc3QsIGxvb3NlKSB7XG4gIHJldHVybiBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBleHBvcnRzLnJjb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMuZ3QgPSBndDtcbmZ1bmN0aW9uIGd0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA+IDA7XG59XG5cbmV4cG9ydHMubHQgPSBsdDtcbmZ1bmN0aW9uIGx0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA8IDA7XG59XG5cbmV4cG9ydHMuZXEgPSBlcTtcbmZ1bmN0aW9uIGVxKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA9PT0gMDtcbn1cblxuZXhwb3J0cy5uZXEgPSBuZXE7XG5mdW5jdGlvbiBuZXEoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpICE9PSAwO1xufVxuXG5leHBvcnRzLmd0ZSA9IGd0ZTtcbmZ1bmN0aW9uIGd0ZShhLCBiLCBsb29zZSkge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMDtcbn1cblxuZXhwb3J0cy5sdGUgPSBsdGU7XG5mdW5jdGlvbiBsdGUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpIDw9IDA7XG59XG5cbmV4cG9ydHMuY21wID0gY21wO1xuZnVuY3Rpb24gY21wKGEsIG9wLCBiLCBsb29zZSkge1xuICB2YXIgcmV0O1xuICBzd2l0Y2ggKG9wKSB7XG4gICAgY2FzZSAnPT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIGEgPSBhLnZlcnNpb247XG4gICAgICBpZiAodHlwZW9mIGIgPT09ICdvYmplY3QnKSBiID0gYi52ZXJzaW9uO1xuICAgICAgcmV0ID0gYSA9PT0gYjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJyE9PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKSBhID0gYS52ZXJzaW9uO1xuICAgICAgaWYgKHR5cGVvZiBiID09PSAnb2JqZWN0JykgYiA9IGIudmVyc2lvbjtcbiAgICAgIHJldCA9IGEgIT09IGI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICcnOiBjYXNlICc9JzogY2FzZSAnPT0nOiByZXQgPSBlcShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGNhc2UgJyE9JzogcmV0ID0gbmVxKGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPic6IHJldCA9IGd0KGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPj0nOiByZXQgPSBndGUoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8JzogcmV0ID0gbHQoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8PSc6IHJldCA9IGx0ZShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgb3BlcmF0b3I6ICcgKyBvcCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0cy5Db21wYXJhdG9yID0gQ29tcGFyYXRvcjtcbmZ1bmN0aW9uIENvbXBhcmF0b3IoY29tcCwgbG9vc2UpIHtcbiAgaWYgKGNvbXAgaW5zdGFuY2VvZiBDb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXAubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIGNvbXA7XG4gICAgZWxzZVxuICAgICAgY29tcCA9IGNvbXAudmFsdWU7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpXG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcblxuICBkZWJ1ZygnY29tcGFyYXRvcicsIGNvbXAsIGxvb3NlKTtcbiAgdGhpcy5sb29zZSA9IGxvb3NlO1xuICB0aGlzLnBhcnNlKGNvbXApO1xuXG4gIGlmICh0aGlzLnNlbXZlciA9PT0gQU5ZKVxuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgZWxzZVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wZXJhdG9yICsgdGhpcy5zZW12ZXIudmVyc2lvbjtcblxuICBkZWJ1ZygnY29tcCcsIHRoaXMpO1xufVxuXG52YXIgQU5ZID0ge307XG5Db21wYXJhdG9yLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKGNvbXApIHtcbiAgdmFyIHIgPSB0aGlzLmxvb3NlID8gcmVbQ09NUEFSQVRPUkxPT1NFXSA6IHJlW0NPTVBBUkFUT1JdO1xuICB2YXIgbSA9IGNvbXAubWF0Y2gocik7XG5cbiAgaWYgKCFtKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY29tcGFyYXRvcjogJyArIGNvbXApO1xuXG4gIHRoaXMub3BlcmF0b3IgPSBtWzFdO1xuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJz0nKVxuICAgIHRoaXMub3BlcmF0b3IgPSAnJztcblxuICAvLyBpZiBpdCBsaXRlcmFsbHkgaXMganVzdCAnPicgb3IgJycgdGhlbiBhbGxvdyBhbnl0aGluZy5cbiAgaWYgKCFtWzJdKVxuICAgIHRoaXMuc2VtdmVyID0gQU5ZO1xuICBlbHNlXG4gICAgdGhpcy5zZW12ZXIgPSBuZXcgU2VtVmVyKG1bMl0sIHRoaXMubG9vc2UpO1xufTtcblxuQ29tcGFyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmFsdWU7XG59O1xuXG5Db21wYXJhdG9yLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24odmVyc2lvbikge1xuICBkZWJ1ZygnQ29tcGFyYXRvci50ZXN0JywgdmVyc2lvbiwgdGhpcy5sb29zZSk7XG5cbiAgaWYgKHRoaXMuc2VtdmVyID09PSBBTlkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnc3RyaW5nJylcbiAgICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY21wKHZlcnNpb24sIHRoaXMub3BlcmF0b3IsIHRoaXMuc2VtdmVyLCB0aGlzLmxvb3NlKTtcbn07XG5cbkNvbXBhcmF0b3IucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbihjb21wLCBsb29zZSkge1xuICBpZiAoIShjb21wIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhIENvbXBhcmF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHZhciByYW5nZVRtcDtcblxuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJycpIHtcbiAgICByYW5nZVRtcCA9IG5ldyBSYW5nZShjb21wLnZhbHVlLCBsb29zZSk7XG4gICAgcmV0dXJuIHNhdGlzZmllcyh0aGlzLnZhbHVlLCByYW5nZVRtcCwgbG9vc2UpO1xuICB9IGVsc2UgaWYgKGNvbXAub3BlcmF0b3IgPT09ICcnKSB7XG4gICAgcmFuZ2VUbXAgPSBuZXcgUmFuZ2UodGhpcy52YWx1ZSwgbG9vc2UpO1xuICAgIHJldHVybiBzYXRpc2ZpZXMoY29tcC5zZW12ZXIsIHJhbmdlVG1wLCBsb29zZSk7XG4gIH1cblxuICB2YXIgc2FtZURpcmVjdGlvbkluY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJz49JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPicpO1xuICB2YXIgc2FtZURpcmVjdGlvbkRlY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPD0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc8JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpO1xuICB2YXIgc2FtZVNlbVZlciA9IHRoaXMuc2VtdmVyLnZlcnNpb24gPT09IGNvbXAuc2VtdmVyLnZlcnNpb247XG4gIHZhciBkaWZmZXJlbnREaXJlY3Rpb25zSW5jbHVzaXZlID1cbiAgICAodGhpcy5vcGVyYXRvciA9PT0gJz49JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPD0nKSAmJlxuICAgIChjb21wLm9wZXJhdG9yID09PSAnPj0nIHx8IGNvbXAub3BlcmF0b3IgPT09ICc8PScpO1xuICB2YXIgb3Bwb3NpdGVEaXJlY3Rpb25zTGVzc1RoYW4gPVxuICAgIGNtcCh0aGlzLnNlbXZlciwgJzwnLCBjb21wLnNlbXZlciwgbG9vc2UpICYmXG4gICAgKCh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpKTtcbiAgdmFyIG9wcG9zaXRlRGlyZWN0aW9uc0dyZWF0ZXJUaGFuID1cbiAgICBjbXAodGhpcy5zZW12ZXIsICc+JywgY29tcC5zZW12ZXIsIGxvb3NlKSAmJlxuICAgICgodGhpcy5vcGVyYXRvciA9PT0gJzw9JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPCcpICYmXG4gICAgKGNvbXAub3BlcmF0b3IgPT09ICc+PScgfHwgY29tcC5vcGVyYXRvciA9PT0gJz4nKSk7XG5cbiAgcmV0dXJuIHNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIHx8IHNhbWVEaXJlY3Rpb25EZWNyZWFzaW5nIHx8XG4gICAgKHNhbWVTZW1WZXIgJiYgZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSkgfHxcbiAgICBvcHBvc2l0ZURpcmVjdGlvbnNMZXNzVGhhbiB8fCBvcHBvc2l0ZURpcmVjdGlvbnNHcmVhdGVyVGhhbjtcbn07XG5cblxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuZnVuY3Rpb24gUmFuZ2UocmFuZ2UsIGxvb3NlKSB7XG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIFJhbmdlKSB7XG4gICAgaWYgKHJhbmdlLmxvb3NlID09PSBsb29zZSkge1xuICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnJhdywgbG9vc2UpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIENvbXBhcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnZhbHVlLCBsb29zZSk7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmFuZ2UpKVxuICAgIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB0aGlzLmxvb3NlID0gbG9vc2U7XG5cbiAgLy8gRmlyc3QsIHNwbGl0IGJhc2VkIG9uIGJvb2xlYW4gb3IgfHxcbiAgdGhpcy5yYXcgPSByYW5nZTtcbiAgdGhpcy5zZXQgPSByYW5nZS5zcGxpdCgvXFxzKlxcfFxcfFxccyovKS5tYXAoZnVuY3Rpb24ocmFuZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVJhbmdlKHJhbmdlLnRyaW0oKSk7XG4gIH0sIHRoaXMpLmZpbHRlcihmdW5jdGlvbihjKSB7XG4gICAgLy8gdGhyb3cgb3V0IGFueSB0aGF0IGFyZSBub3QgcmVsZXZhbnQgZm9yIHdoYXRldmVyIHJlYXNvblxuICAgIHJldHVybiBjLmxlbmd0aDtcbiAgfSk7XG5cbiAgaWYgKCF0aGlzLnNldC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFNlbVZlciBSYW5nZTogJyArIHJhbmdlKTtcbiAgfVxuXG4gIHRoaXMuZm9ybWF0KCk7XG59XG5cblJhbmdlLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yYW5nZSA9IHRoaXMuc2V0Lm1hcChmdW5jdGlvbihjb21wcykge1xuICAgIHJldHVybiBjb21wcy5qb2luKCcgJykudHJpbSgpO1xuICB9KS5qb2luKCd8fCcpLnRyaW0oKTtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUucGFyc2VSYW5nZSA9IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBsb29zZSA9IHRoaXMubG9vc2U7XG4gIHJhbmdlID0gcmFuZ2UudHJpbSgpO1xuICBkZWJ1ZygncmFuZ2UnLCByYW5nZSwgbG9vc2UpO1xuICAvLyBgMS4yLjMgLSAxLjIuNGAgPT4gYD49MS4yLjMgPD0xLjIuNGBcbiAgdmFyIGhyID0gbG9vc2UgPyByZVtIWVBIRU5SQU5HRUxPT1NFXSA6IHJlW0hZUEhFTlJBTkdFXTtcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKGhyLCBoeXBoZW5SZXBsYWNlKTtcbiAgZGVidWcoJ2h5cGhlbiByZXBsYWNlJywgcmFuZ2UpO1xuICAvLyBgPiAxLjIuMyA8IDEuMi41YCA9PiBgPjEuMi4zIDwxLjIuNWBcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW0NPTVBBUkFUT1JUUklNXSwgY29tcGFyYXRvclRyaW1SZXBsYWNlKTtcbiAgZGVidWcoJ2NvbXBhcmF0b3IgdHJpbScsIHJhbmdlLCByZVtDT01QQVJBVE9SVFJJTV0pO1xuXG4gIC8vIGB+IDEuMi4zYCA9PiBgfjEuMi4zYFxuICByYW5nZSA9IHJhbmdlLnJlcGxhY2UocmVbVElMREVUUklNXSwgdGlsZGVUcmltUmVwbGFjZSk7XG5cbiAgLy8gYF4gMS4yLjNgID0+IGBeMS4yLjNgXG4gIHJhbmdlID0gcmFuZ2UucmVwbGFjZShyZVtDQVJFVFRSSU1dLCBjYXJldFRyaW1SZXBsYWNlKTtcblxuICAvLyBub3JtYWxpemUgc3BhY2VzXG4gIHJhbmdlID0gcmFuZ2Uuc3BsaXQoL1xccysvKS5qb2luKCcgJyk7XG5cbiAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIHJhbmdlIGlzIGNvbXBsZXRlbHkgdHJpbW1lZCBhbmRcbiAgLy8gcmVhZHkgdG8gYmUgc3BsaXQgaW50byBjb21wYXJhdG9ycy5cblxuICB2YXIgY29tcFJlID0gbG9vc2UgPyByZVtDT01QQVJBVE9STE9PU0VdIDogcmVbQ09NUEFSQVRPUl07XG4gIHZhciBzZXQgPSByYW5nZS5zcGxpdCgnICcpLm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIHBhcnNlQ29tcGFyYXRvcihjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKS5zcGxpdCgvXFxzKy8pO1xuICBpZiAodGhpcy5sb29zZSkge1xuICAgIC8vIGluIGxvb3NlIG1vZGUsIHRocm93IG91dCBhbnkgdGhhdCBhcmUgbm90IHZhbGlkIGNvbXBhcmF0b3JzXG4gICAgc2V0ID0gc2V0LmZpbHRlcihmdW5jdGlvbihjb21wKSB7XG4gICAgICByZXR1cm4gISFjb21wLm1hdGNoKGNvbXBSZSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNldDtcbn07XG5cblJhbmdlLnByb3RvdHlwZS5pbnRlcnNlY3RzID0gZnVuY3Rpb24ocmFuZ2UsIGxvb3NlKSB7XG4gIGlmICghKHJhbmdlIGluc3RhbmNlb2YgUmFuZ2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYSBSYW5nZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2V0LnNvbWUoZnVuY3Rpb24odGhpc0NvbXBhcmF0b3JzKSB7XG4gICAgcmV0dXJuIHRoaXNDb21wYXJhdG9ycy5ldmVyeShmdW5jdGlvbih0aGlzQ29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHJhbmdlLnNldC5zb21lKGZ1bmN0aW9uKHJhbmdlQ29tcGFyYXRvcnMpIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlQ29tcGFyYXRvcnMuZXZlcnkoZnVuY3Rpb24ocmFuZ2VDb21wYXJhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNDb21wYXJhdG9yLmludGVyc2VjdHMocmFuZ2VDb21wYXJhdG9yLCBsb29zZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gTW9zdGx5IGp1c3QgZm9yIHRlc3RpbmcgYW5kIGxlZ2FjeSBBUEkgcmVhc29uc1xuZXhwb3J0cy50b0NvbXBhcmF0b3JzID0gdG9Db21wYXJhdG9ycztcbmZ1bmN0aW9uIHRvQ29tcGFyYXRvcnMocmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKS5zZXQubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gY29tcC5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfSkuam9pbignICcpLnRyaW0oKS5zcGxpdCgnICcpO1xuICB9KTtcbn1cblxuLy8gY29tcHJpc2VkIG9mIHhyYW5nZXMsIHRpbGRlcywgc3RhcnMsIGFuZCBndGx0J3MgYXQgdGhpcyBwb2ludC5cbi8vIGFscmVhZHkgcmVwbGFjZWQgdGhlIGh5cGhlbiByYW5nZXNcbi8vIHR1cm4gaW50byBhIHNldCBvZiBKVVNUIGNvbXBhcmF0b3JzLlxuZnVuY3Rpb24gcGFyc2VDb21wYXJhdG9yKGNvbXAsIGxvb3NlKSB7XG4gIGRlYnVnKCdjb21wJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlQ2FyZXRzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlVGlsZGVzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ3RpbGRlcycsIGNvbXApO1xuICBjb21wID0gcmVwbGFjZVhSYW5nZXMoY29tcCwgbG9vc2UpO1xuICBkZWJ1ZygneHJhbmdlJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlU3RhcnMoY29tcCwgbG9vc2UpO1xuICBkZWJ1Zygnc3RhcnMnLCBjb21wKTtcbiAgcmV0dXJuIGNvbXA7XG59XG5cbmZ1bmN0aW9uIGlzWChpZCkge1xuICByZXR1cm4gIWlkIHx8IGlkLnRvTG93ZXJDYXNlKCkgPT09ICd4JyB8fCBpZCA9PT0gJyonO1xufVxuXG4vLyB+LCB+PiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIH4yLCB+Mi54LCB+Mi54LngsIH4+Miwgfj4yLnggfj4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIH4yLjAsIH4yLjAueCwgfj4yLjAsIH4+Mi4wLnggLS0+ID49Mi4wLjAgPDIuMS4wXG4vLyB+MS4yLCB+MS4yLngsIH4+MS4yLCB+PjEuMi54IC0tPiA+PTEuMi4wIDwxLjMuMFxuLy8gfjEuMi4zLCB+PjEuMi4zIC0tPiA+PTEuMi4zIDwxLjMuMFxuLy8gfjEuMi4wLCB+PjEuMi4wIC0tPiA+PTEuMi4wIDwxLjMuMFxuZnVuY3Rpb24gcmVwbGFjZVRpbGRlcyhjb21wLCBsb29zZSkge1xuICByZXR1cm4gY29tcC50cmltKCkuc3BsaXQoL1xccysvKS5tYXAoZnVuY3Rpb24oY29tcCkge1xuICAgIHJldHVybiByZXBsYWNlVGlsZGUoY29tcCwgbG9vc2UpO1xuICB9KS5qb2luKCcgJyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VUaWxkZShjb21wLCBsb29zZSkge1xuICB2YXIgciA9IGxvb3NlID8gcmVbVElMREVMT09TRV0gOiByZVtUSUxERV07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygndGlsZGUnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKVxuICAgICAgLy8gfjEuMiA9PSA+PTEuMi4wIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICBlbHNlIGlmIChwcikge1xuICAgICAgZGVidWcoJ3JlcGxhY2VUaWxkZSBwcicsIHByKTtcbiAgICAgIGlmIChwci5jaGFyQXQoMCkgIT09ICctJylcbiAgICAgICAgcHIgPSAnLScgKyBwcjtcbiAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9IGVsc2VcbiAgICAgIC8vIH4xLjIuMyA9PSA+PTEuMi4zIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcblxuICAgIGRlYnVnKCd0aWxkZSByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG4vLyBeIC0tPiAqIChhbnksIGtpbmRhIHNpbGx5KVxuLy8gXjIsIF4yLngsIF4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4yLjAsIF4yLjAueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4xLjIsIF4xLjIueCAtLT4gPj0xLjIuMCA8Mi4wLjBcbi8vIF4xLjIuMyAtLT4gPj0xLjIuMyA8Mi4wLjBcbi8vIF4xLjIuMCAtLT4gPj0xLjIuMCA8Mi4wLjBcbmZ1bmN0aW9uIHJlcGxhY2VDYXJldHMoY29tcCwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZUNhcmV0KGNvbXAsIGxvb3NlKTtcbiAgfSkuam9pbignICcpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ2FyZXQoY29tcCwgbG9vc2UpIHtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCwgbG9vc2UpO1xuICB2YXIgciA9IGxvb3NlID8gcmVbQ0FSRVRMT09TRV0gOiByZVtDQVJFVF07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygnY2FyZXQnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKSB7XG4gICAgICBpZiAoTSA9PT0gJzAnKVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2UgaWYgKHByKSB7XG4gICAgICBkZWJ1ZygncmVwbGFjZUNhcmV0IHByJywgcHIpO1xuICAgICAgaWYgKHByLmNoYXJBdCgwKSAhPT0gJy0nKVxuICAgICAgICBwciA9ICctJyArIHByO1xuICAgICAgaWYgKE0gPT09ICcwJykge1xuICAgICAgICBpZiAobSA9PT0gJzAnKVxuICAgICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICsgcHIgK1xuICAgICAgICAgICAgICAgICcgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICcgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ25vIHByJyk7XG4gICAgICBpZiAoTSA9PT0gJzAnKSB7XG4gICAgICAgIGlmIChtID09PSAnMCcpXG4gICAgICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgJyA8JyArICgrTSArIDEpICsgJy4wLjAnO1xuICAgIH1cblxuICAgIGRlYnVnKCdjYXJldCByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlWFJhbmdlcyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVhSYW5nZXMnLCBjb21wLCBsb29zZSk7XG4gIHJldHVybiBjb21wLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSkge1xuICBjb21wID0gY29tcC50cmltKCk7XG4gIHZhciByID0gbG9vc2UgPyByZVtYUkFOR0VMT09TRV0gOiByZVtYUkFOR0VdO1xuICByZXR1cm4gY29tcC5yZXBsYWNlKHIsIGZ1bmN0aW9uKHJldCwgZ3RsdCwgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygneFJhbmdlJywgY29tcCwgcmV0LCBndGx0LCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHhNID0gaXNYKE0pO1xuICAgIHZhciB4bSA9IHhNIHx8IGlzWChtKTtcbiAgICB2YXIgeHAgPSB4bSB8fCBpc1gocCk7XG4gICAgdmFyIGFueVggPSB4cDtcblxuICAgIGlmIChndGx0ID09PSAnPScgJiYgYW55WClcbiAgICAgIGd0bHQgPSAnJztcblxuICAgIGlmICh4TSkge1xuICAgICAgaWYgKGd0bHQgPT09ICc+JyB8fCBndGx0ID09PSAnPCcpIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBhbGxvd2VkXG4gICAgICAgIHJldCA9ICc8MC4wLjAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBmb3JiaWRkZW5cbiAgICAgICAgcmV0ID0gJyonO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3RsdCAmJiBhbnlYKSB7XG4gICAgICAvLyByZXBsYWNlIFggd2l0aCAwXG4gICAgICBpZiAoeG0pXG4gICAgICAgIG0gPSAwO1xuICAgICAgaWYgKHhwKVxuICAgICAgICBwID0gMDtcblxuICAgICAgaWYgKGd0bHQgPT09ICc+Jykge1xuICAgICAgICAvLyA+MSA9PiA+PTIuMC4wXG4gICAgICAgIC8vID4xLjIgPT4gPj0xLjMuMFxuICAgICAgICAvLyA+MS4yLjMgPT4gPj0gMS4yLjRcbiAgICAgICAgZ3RsdCA9ICc+PSc7XG4gICAgICAgIGlmICh4bSkge1xuICAgICAgICAgIE0gPSArTSArIDE7XG4gICAgICAgICAgbSA9IDA7XG4gICAgICAgICAgcCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoeHApIHtcbiAgICAgICAgICBtID0gK20gKyAxO1xuICAgICAgICAgIHAgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGd0bHQgPT09ICc8PScpIHtcbiAgICAgICAgLy8gPD0wLjcueCBpcyBhY3R1YWxseSA8MC44LjAsIHNpbmNlIGFueSAwLjcueCBzaG91bGRcbiAgICAgICAgLy8gcGFzcy4gIFNpbWlsYXJseSwgPD03LnggaXMgYWN0dWFsbHkgPDguMC4wLCBldGMuXG4gICAgICAgIGd0bHQgPSAnPCc7XG4gICAgICAgIGlmICh4bSlcbiAgICAgICAgICBNID0gK00gKyAxO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbSA9ICttICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0ID0gZ3RsdCArIE0gKyAnLicgKyBtICsgJy4nICsgcDtcbiAgICB9IGVsc2UgaWYgKHhtKSB7XG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgfSBlbHNlIGlmICh4cCkge1xuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9XG5cbiAgICBkZWJ1ZygneFJhbmdlIHJldHVybicsIHJldCk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cblxuLy8gQmVjYXVzZSAqIGlzIEFORC1lZCB3aXRoIGV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgY29tcGFyYXRvcixcbi8vIGFuZCAnJyBtZWFucyBcImFueSB2ZXJzaW9uXCIsIGp1c3QgcmVtb3ZlIHRoZSAqcyBlbnRpcmVseS5cbmZ1bmN0aW9uIHJlcGxhY2VTdGFycyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVN0YXJzJywgY29tcCwgbG9vc2UpO1xuICAvLyBMb29zZW5lc3MgaXMgaWdub3JlZCBoZXJlLiAgc3RhciBpcyBhbHdheXMgYXMgbG9vc2UgYXMgaXQgZ2V0cyFcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnJlcGxhY2UocmVbU1RBUl0sICcnKTtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gc3RyaW5nLnJlcGxhY2UocmVbSFlQSEVOUkFOR0VdKVxuLy8gTSwgbSwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkXG4vLyAxLjIgLSAzLjQuNSA9PiA+PTEuMi4wIDw9My40LjVcbi8vIDEuMi4zIC0gMy40ID0+ID49MS4yLjAgPDMuNS4wIEFueSAzLjQueCB3aWxsIGRvXG4vLyAxLjIgLSAzLjQgPT4gPj0xLjIuMCA8My41LjBcbmZ1bmN0aW9uIGh5cGhlblJlcGxhY2UoJDAsXG4gICAgICAgICAgICAgICAgICAgICAgIGZyb20sIGZNLCBmbSwgZnAsIGZwciwgZmIsXG4gICAgICAgICAgICAgICAgICAgICAgIHRvLCB0TSwgdG0sIHRwLCB0cHIsIHRiKSB7XG5cbiAgaWYgKGlzWChmTSkpXG4gICAgZnJvbSA9ICcnO1xuICBlbHNlIGlmIChpc1goZm0pKVxuICAgIGZyb20gPSAnPj0nICsgZk0gKyAnLjAuMCc7XG4gIGVsc2UgaWYgKGlzWChmcCkpXG4gICAgZnJvbSA9ICc+PScgKyBmTSArICcuJyArIGZtICsgJy4wJztcbiAgZWxzZVxuICAgIGZyb20gPSAnPj0nICsgZnJvbTtcblxuICBpZiAoaXNYKHRNKSlcbiAgICB0byA9ICcnO1xuICBlbHNlIGlmIChpc1godG0pKVxuICAgIHRvID0gJzwnICsgKCt0TSArIDEpICsgJy4wLjAnO1xuICBlbHNlIGlmIChpc1godHApKVxuICAgIHRvID0gJzwnICsgdE0gKyAnLicgKyAoK3RtICsgMSkgKyAnLjAnO1xuICBlbHNlIGlmICh0cHIpXG4gICAgdG8gPSAnPD0nICsgdE0gKyAnLicgKyB0bSArICcuJyArIHRwICsgJy0nICsgdHByO1xuICBlbHNlXG4gICAgdG8gPSAnPD0nICsgdG87XG5cbiAgcmV0dXJuIChmcm9tICsgJyAnICsgdG8pLnRyaW0oKTtcbn1cblxuXG4vLyBpZiBBTlkgb2YgdGhlIHNldHMgbWF0Y2ggQUxMIG9mIGl0cyBjb21wYXJhdG9ycywgdGhlbiBwYXNzXG5SYW5nZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKHZlcnNpb24pIHtcbiAgaWYgKCF2ZXJzaW9uKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKVxuICAgIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIHRoaXMubG9vc2UpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGVzdFNldCh0aGlzLnNldFtpXSwgdmVyc2lvbikpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiB0ZXN0U2V0KHNldCwgdmVyc2lvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKykge1xuICAgIGlmICghc2V0W2ldLnRlc3QodmVyc2lvbikpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgIC8vIEZpbmQgdGhlIHNldCBvZiB2ZXJzaW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyhzZXRbaV0uc2VtdmVyKTtcbiAgICAgIGlmIChzZXRbaV0uc2VtdmVyID09PSBBTlkpXG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBpZiAoc2V0W2ldLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGFsbG93ZWQgPSBzZXRbaV0uc2VtdmVyO1xuICAgICAgICBpZiAoYWxsb3dlZC5tYWpvciA9PT0gdmVyc2lvbi5tYWpvciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5taW5vciA9PT0gdmVyc2lvbi5taW5vciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5wYXRjaCA9PT0gdmVyc2lvbi5wYXRjaClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWZXJzaW9uIGhhcyBhIC1wcmUsIGJ1dCBpdCdzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2UgbGlrZS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0cy5zYXRpc2ZpZXMgPSBzYXRpc2ZpZXM7XG5mdW5jdGlvbiBzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHRyeSB7XG4gICAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbik7XG59XG5cbmV4cG9ydHMubWF4U2F0aXNmeWluZyA9IG1heFNhdGlzZnlpbmc7XG5mdW5jdGlvbiBtYXhTYXRpc2Z5aW5nKHZlcnNpb25zLCByYW5nZSwgbG9vc2UpIHtcbiAgdmFyIG1heCA9IG51bGw7XG4gIHZhciBtYXhTViA9IG51bGw7XG4gIHRyeSB7XG4gICAgdmFyIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSk7XG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7IC8vIHNhdGlzZmllcyh2LCByYW5nZSwgbG9vc2UpXG4gICAgICBpZiAoIW1heCB8fCBtYXhTVi5jb21wYXJlKHYpID09PSAtMSkgeyAvLyBjb21wYXJlKG1heCwgdiwgdHJ1ZSlcbiAgICAgICAgbWF4ID0gdjtcbiAgICAgICAgbWF4U1YgPSBuZXcgU2VtVmVyKG1heCwgbG9vc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG1heDtcbn1cblxuZXhwb3J0cy5taW5TYXRpc2Z5aW5nID0gbWluU2F0aXNmeWluZztcbmZ1bmN0aW9uIG1pblNhdGlzZnlpbmcodmVyc2lvbnMsIHJhbmdlLCBsb29zZSkge1xuICB2YXIgbWluID0gbnVsbDtcbiAgdmFyIG1pblNWID0gbnVsbDtcbiAgdHJ5IHtcbiAgICB2YXIgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHsgLy8gc2F0aXNmaWVzKHYsIHJhbmdlLCBsb29zZSlcbiAgICAgIGlmICghbWluIHx8IG1pblNWLmNvbXBhcmUodikgPT09IDEpIHsgLy8gY29tcGFyZShtaW4sIHYsIHRydWUpXG4gICAgICAgIG1pbiA9IHY7XG4gICAgICAgIG1pblNWID0gbmV3IFNlbVZlcihtaW4sIGxvb3NlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBtaW47XG59XG5cbmV4cG9ydHMudmFsaWRSYW5nZSA9IHZhbGlkUmFuZ2U7XG5mdW5jdGlvbiB2YWxpZFJhbmdlKHJhbmdlLCBsb29zZSkge1xuICB0cnkge1xuICAgIC8vIFJldHVybiAnKicgaW5zdGVhZCBvZiAnJyBzbyB0aGF0IHRydXRoaW5lc3Mgd29ya3MuXG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIGl0J3MgaW52YWxpZCBhbnl3YXlcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSkucmFuZ2UgfHwgJyonO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZVxuZXhwb3J0cy5sdHIgPSBsdHI7XG5mdW5jdGlvbiBsdHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPCcsIGxvb3NlKTtcbn1cblxuLy8gRGV0ZXJtaW5lIGlmIHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGUgdmVyc2lvbnMgcG9zc2libGUgaW4gdGhlIHJhbmdlLlxuZXhwb3J0cy5ndHIgPSBndHI7XG5mdW5jdGlvbiBndHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPicsIGxvb3NlKTtcbn1cblxuZXhwb3J0cy5vdXRzaWRlID0gb3V0c2lkZTtcbmZ1bmN0aW9uIG91dHNpZGUodmVyc2lvbiwgcmFuZ2UsIGhpbG8sIGxvb3NlKSB7XG4gIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKTtcbiAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB2YXIgZ3RmbiwgbHRlZm4sIGx0Zm4sIGNvbXAsIGVjb21wO1xuICBzd2l0Y2ggKGhpbG8pIHtcbiAgICBjYXNlICc+JzpcbiAgICAgIGd0Zm4gPSBndDtcbiAgICAgIGx0ZWZuID0gbHRlO1xuICAgICAgbHRmbiA9IGx0O1xuICAgICAgY29tcCA9ICc+JztcbiAgICAgIGVjb21wID0gJz49JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzwnOlxuICAgICAgZ3RmbiA9IGx0O1xuICAgICAgbHRlZm4gPSBndGU7XG4gICAgICBsdGZuID0gZ3Q7XG4gICAgICBjb21wID0gJzwnO1xuICAgICAgZWNvbXAgPSAnPD0nO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ011c3QgcHJvdmlkZSBhIGhpbG8gdmFsIG9mIFwiPFwiIG9yIFwiPlwiJyk7XG4gIH1cblxuICAvLyBJZiBpdCBzYXRpc2lmZXMgdGhlIHJhbmdlIGl0IGlzIG5vdCBvdXRzaWRlXG4gIGlmIChzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZyb20gbm93IG9uLCB2YXJpYWJsZSB0ZXJtcyBhcmUgYXMgaWYgd2UncmUgaW4gXCJndHJcIiBtb2RlLlxuICAvLyBidXQgbm90ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmxpcHBlZCBmb3IgdGhlIFwibHRyXCIgZnVuY3Rpb24uXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZS5zZXQubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV07XG5cbiAgICB2YXIgaGlnaCA9IG51bGw7XG4gICAgdmFyIGxvdyA9IG51bGw7XG5cbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBhcmF0b3IpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yLnNlbXZlciA9PT0gQU5ZKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSBuZXcgQ29tcGFyYXRvcignPj0wLjAuMCcpXG4gICAgICB9XG4gICAgICBoaWdoID0gaGlnaCB8fCBjb21wYXJhdG9yO1xuICAgICAgbG93ID0gbG93IHx8IGNvbXBhcmF0b3I7XG4gICAgICBpZiAoZ3Rmbihjb21wYXJhdG9yLnNlbXZlciwgaGlnaC5zZW12ZXIsIGxvb3NlKSkge1xuICAgICAgICBoaWdoID0gY29tcGFyYXRvcjtcbiAgICAgIH0gZWxzZSBpZiAobHRmbihjb21wYXJhdG9yLnNlbXZlciwgbG93LnNlbXZlciwgbG9vc2UpKSB7XG4gICAgICAgIGxvdyA9IGNvbXBhcmF0b3I7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGUgZWRnZSB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGEgb3BlcmF0b3IgdGhlbiBvdXIgdmVyc2lvblxuICAgIC8vIGlzbid0IG91dHNpZGUgaXRcbiAgICBpZiAoaGlnaC5vcGVyYXRvciA9PT0gY29tcCB8fCBoaWdoLm9wZXJhdG9yID09PSBlY29tcCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBsb3dlc3QgdmVyc2lvbiBjb21wYXJhdG9yIGhhcyBhbiBvcGVyYXRvciBhbmQgb3VyIHZlcnNpb25cbiAgICAvLyBpcyBsZXNzIHRoYW4gaXQgdGhlbiBpdCBpc24ndCBoaWdoZXIgdGhhbiB0aGUgcmFuZ2VcbiAgICBpZiAoKCFsb3cub3BlcmF0b3IgfHwgbG93Lm9wZXJhdG9yID09PSBjb21wKSAmJlxuICAgICAgICBsdGVmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobG93Lm9wZXJhdG9yID09PSBlY29tcCAmJiBsdGZuKHZlcnNpb24sIGxvdy5zZW12ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnRzLnByZXJlbGVhc2UgPSBwcmVyZWxlYXNlO1xuZnVuY3Rpb24gcHJlcmVsZWFzZSh2ZXJzaW9uLCBsb29zZSkge1xuICB2YXIgcGFyc2VkID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gKHBhcnNlZCAmJiBwYXJzZWQucHJlcmVsZWFzZS5sZW5ndGgpID8gcGFyc2VkLnByZXJlbGVhc2UgOiBudWxsO1xufVxuXG5leHBvcnRzLmludGVyc2VjdHMgPSBpbnRlcnNlY3RzO1xuZnVuY3Rpb24gaW50ZXJzZWN0cyhyMSwgcjIsIGxvb3NlKSB7XG4gIHIxID0gbmV3IFJhbmdlKHIxLCBsb29zZSlcbiAgcjIgPSBuZXcgUmFuZ2UocjIsIGxvb3NlKVxuICByZXR1cm4gcjEuaW50ZXJzZWN0cyhyMilcbn1cblxuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5mdW5jdGlvbiBjb2VyY2UodmVyc2lvbikge1xuICBpZiAodmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlcilcbiAgICByZXR1cm4gdmVyc2lvbjtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHZhciBtYXRjaCA9IHZlcnNpb24ubWF0Y2gocmVbQ09FUkNFXSk7XG5cbiAgaWYgKG1hdGNoID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHBhcnNlKChtYXRjaFsxXSB8fCAnMCcpICsgJy4nICsgKG1hdGNoWzJdIHx8ICcwJykgKyAnLicgKyAobWF0Y2hbM10gfHwgJzAnKSk7IFxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js"},"absolutePath":"/Users/roblou/code/vscode/webpack/universalModuleDefinition","resolvedUrl":"file:///Users/roblou/code/vscode/webpack/universalModuleDefinition","sourceMapSources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///node_modules/semver/semver.js","webpack:///node_modules/process/browser.js"]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425101073,"message":"SourceMap: mapping webpack:///webpack/bootstrap => /Users/roblou/code/vscode/webpack/bootstrap, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcemap","timestamp":1588425101073,"message":"SourceMap: mapping webpack:///node_modules/semver/semver.js => /Users/roblou/code/vscode/node_modules/semver/semver.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101073,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///node_modules/semver/semver.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VtdmVyL3NlbXZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsImEiLCJpIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJkZWJ1ZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0RFQlVHIiwidGVzdCIsImFyZ3MiLCJBcnJheSIsInNsaWNlIiwiYXJndW1lbnRzIiwidW5zaGlmdCIsImNvbnNvbGUiLCJsb2ciLCJhcHBseSIsIlNFTVZFUl9TUEVDX1ZFUlNJT04iLCJNQVhfTEVOR1RIIiwiTUFYX1NBRkVfSU5URUdFUiIsIk51bWJlciIsInJlIiwic3JjIiwiUiIsIk5VTUVSSUNJREVOVElGSUVSIiwiTlVNRVJJQ0lERU5USUZJRVJMT09TRSIsIk5PTk5VTUVSSUNJREVOVElGSUVSIiwiTUFJTlZFUlNJT04iLCJNQUlOVkVSU0lPTkxPT1NFIiwiUFJFUkVMRUFTRUlERU5USUZJRVIiLCJQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFIiwiUFJFUkVMRUFTRSIsIlBSRVJFTEVBU0VMT09TRSIsIkJVSUxESURFTlRJRklFUiIsIkJVSUxEIiwiRlVMTCIsIkZVTExQTEFJTiIsIkxPT1NFUExBSU4iLCJMT09TRSIsIkdUTFQiLCJYUkFOR0VJREVOVElGSUVSTE9PU0UiLCJYUkFOR0VJREVOVElGSUVSIiwiWFJBTkdFUExBSU4iLCJYUkFOR0VQTEFJTkxPT1NFIiwiWFJBTkdFIiwiWFJBTkdFTE9PU0UiLCJDT0VSQ0UiLCJMT05FVElMREUiLCJUSUxERVRSSU0iLCJSZWdFeHAiLCJUSUxERSIsIlRJTERFTE9PU0UiLCJMT05FQ0FSRVQiLCJDQVJFVFRSSU0iLCJDQVJFVCIsIkNBUkVUTE9PU0UiLCJDT01QQVJBVE9STE9PU0UiLCJDT01QQVJBVE9SIiwiQ09NUEFSQVRPUlRSSU0iLCJIWVBIRU5SQU5HRSIsIkhZUEhFTlJBTkdFTE9PU0UiLCJTVEFSIiwicGFyc2UiLCJ2ZXJzaW9uIiwibG9vc2UiLCJTZW1WZXIiLCJsZW5ndGgiLCJlciIsIlR5cGVFcnJvciIsInRyaW0iLCJtYXRjaCIsInJhdyIsIm1ham9yIiwibWlub3IiLCJwYXRjaCIsInByZXJlbGVhc2UiLCJzcGxpdCIsIm1hcCIsImlkIiwibnVtIiwiYnVpbGQiLCJmb3JtYXQiLCJ2YWxpZCIsInYiLCJjbGVhbiIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb21wYXJlIiwib3RoZXIiLCJjb21wYXJlTWFpbiIsImNvbXBhcmVQcmUiLCJjb21wYXJlSWRlbnRpZmllcnMiLCJiIiwidW5kZWZpbmVkIiwiaW5jIiwicmVsZWFzZSIsImlkZW50aWZpZXIiLCJwdXNoIiwiaXNOYU4iLCJFcnJvciIsImRpZmYiLCJ2ZXJzaW9uMSIsInZlcnNpb24yIiwiZXEiLCJ2MSIsInYyIiwibnVtZXJpYyIsImFudW0iLCJibnVtIiwiZ3QiLCJsdCIsIm5lcSIsImd0ZSIsImx0ZSIsImNtcCIsIm9wIiwicmV0IiwiQ29tcGFyYXRvciIsImNvbXAiLCJzZW12ZXIiLCJBTlkiLCJvcGVyYXRvciIsInJjb21wYXJlSWRlbnRpZmllcnMiLCJjb21wYXJlTG9vc2UiLCJyY29tcGFyZSIsInNvcnQiLCJsaXN0IiwicnNvcnQiLCJSYW5nZSIsInJhbmdlIiwic2V0IiwicGFyc2VSYW5nZSIsImZpbHRlciIsImlzWCIsInRvTG93ZXJDYXNlIiwiaHlwaGVuUmVwbGFjZSIsIiQwIiwiZnJvbSIsImZNIiwiZm0iLCJmcCIsImZwciIsImZiIiwidG8iLCJ0TSIsInRtIiwidHAiLCJ0cHIiLCJ0YiIsInRlc3RTZXQiLCJhbGxvd2VkIiwic2F0aXNmaWVzIiwib3V0c2lkZSIsImhpbG8iLCJndGZuIiwibHRlZm4iLCJsdGZuIiwiZWNvbXAiLCJjb21wYXJhdG9ycyIsImhpZ2giLCJsb3ciLCJmb3JFYWNoIiwiY29tcGFyYXRvciIsImludGVyc2VjdHMiLCJyYW5nZVRtcCIsInNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIiwic2FtZURpcmVjdGlvbkRlY3JlYXNpbmciLCJzYW1lU2VtVmVyIiwiZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSIsIm9wcG9zaXRlRGlyZWN0aW9uc0xlc3NUaGFuIiwib3Bwb3NpdGVEaXJlY3Rpb25zR3JlYXRlclRoYW4iLCJjb21wcyIsImhyIiwiY29tcFJlIiwiXyIsIk0iLCJwciIsImNoYXJBdCIsInJlcGxhY2VDYXJldCIsInJlcGxhY2VDYXJldHMiLCJyZXBsYWNlVGlsZGUiLCJyZXBsYWNlVGlsZGVzIiwiZ3RsdCIsInhNIiwieG0iLCJ4cCIsInJlcGxhY2VYUmFuZ2UiLCJyZXBsYWNlWFJhbmdlcyIsInJlcGxhY2VTdGFycyIsInBhcnNlQ29tcGFyYXRvciIsInNvbWUiLCJ0aGlzQ29tcGFyYXRvcnMiLCJldmVyeSIsInRoaXNDb21wYXJhdG9yIiwicmFuZ2VDb21wYXJhdG9ycyIsInJhbmdlQ29tcGFyYXRvciIsInRvQ29tcGFyYXRvcnMiLCJtYXhTYXRpc2Z5aW5nIiwidmVyc2lvbnMiLCJtYXgiLCJtYXhTViIsInJhbmdlT2JqIiwibWluU2F0aXNmeWluZyIsIm1pbiIsIm1pblNWIiwidmFsaWRSYW5nZSIsImx0ciIsImd0ciIsInBhcnNlZCIsInIxIiwicjIiLCJjb2VyY2UiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImUiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImNvbmNhdCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibGVuIiwicnVuIiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsImFycmF5Iiwibm9vcCIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiYXJndiIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDaEQsR0FBc0IsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsU0FDYixHQUFxQixtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILE9BQ1AsQ0FDSixJQUFJSyxFQUFJTCxJQUNSLElBQUksSUFBSU0sS0FBS0QsR0FBdUIsaUJBQVpKLFFBQXVCQSxRQUFVRixHQUFNTyxHQUFLRCxFQUFFQyxJQVB4RSxDQVNtQixvQkFBVEMsS0FBdUJBLEtBQU9DLE1BQU0sV0FDOUMsTyxZQ1RFLElBQUlDLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FB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QUFVN0MsR0FHaENnUSxFQUFNN0gsS0FBSyxJQUFJd0ksRUFBS2hCLEVBQUtqTixJQUNKLElBQWpCc04sRUFBTTdKLFFBQWlCOEosR0FDdkJQLEVBQVdXLElBU25CTSxFQUFLMU8sVUFBVXVPLElBQU0sV0FDakJ0USxLQUFLeVAsSUFBSTFNLE1BQU0sS0FBTS9DLEtBQUswUSxRQUU5QnRPLEVBQVF5TyxNQUFRLFVBQ2hCek8sRUFBUTBPLFNBQVUsRUFDbEIxTyxFQUFRQyxJQUFNLEdBQ2RELEVBQVEyTyxLQUFPLEdBQ2YzTyxFQUFRMEQsUUFBVSxHQUNsQjFELEVBQVFrTSxTQUFXLEdBSW5CbE0sRUFBUTRPLEdBQUtMLEVBQ2J2TyxFQUFRNk8sWUFBY04sRUFDdEJ2TyxFQUFROE8sS0FBT1AsRUFDZnZPLEVBQVErTyxJQUFNUixFQUNkdk8sRUFBUWdQLGVBQWlCVCxFQUN6QnZPLEVBQVFpUCxtQkFBcUJWLEVBQzdCdk8sRUFBUWtQLEtBQU9YLEVBQ2Z2TyxFQUFRbVAsZ0JBQWtCWixFQUMxQnZPLEVBQVFvUCxvQkFBc0JiLEVBRTlCdk8sRUFBUXFQLFVBQVksU0FBVS9RLEdBQVEsTUFBTyxJQUU3QzBCLEVBQVFzUCxRQUFVLFNBQVVoUixHQUN4QixNQUFNLElBQUl5SCxNQUFNLHFDQUdwQi9GLEVBQVF1UCxJQUFNLFdBQWMsTUFBTyxLQUNuQ3ZQLEVBQVF3UCxNQUFRLFNBQVVDLEdBQ3RCLE1BQU0sSUFBSTFKLE1BQU0sbUNBRXBCL0YsRUFBUTBQLE1BQVEsV0FBYSxPQUFPIiwiZmlsZSI6InNlbXZlci11bWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IFNlbVZlcjtcblxuLy8gVGhlIGRlYnVnIGZ1bmN0aW9uIGlzIGV4Y2x1ZGVkIGVudGlyZWx5IGZyb20gdGhlIG1pbmlmaWVkIHZlcnNpb24uXG4vKiBub21pbiAqLyB2YXIgZGVidWc7XG4vKiBub21pbiAqLyBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmXG4gICAgLyogbm9taW4gKi8gcHJvY2Vzcy5lbnYgJiZcbiAgICAvKiBub21pbiAqLyBwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmXG4gICAgLyogbm9taW4gKi8gL1xcYnNlbXZlclxcYi9pLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRykpXG4gIC8qIG5vbWluICovIGRlYnVnID0gZnVuY3Rpb24oKSB7XG4gICAgLyogbm9taW4gKi8gdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIC8qIG5vbWluICovIGFyZ3MudW5zaGlmdCgnU0VNVkVSJyk7XG4gICAgLyogbm9taW4gKi8gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gICAgLyogbm9taW4gKi8gfTtcbi8qIG5vbWluICovIGVsc2VcbiAgLyogbm9taW4gKi8gZGVidWcgPSBmdW5jdGlvbigpIHt9O1xuXG4vLyBOb3RlOiB0aGlzIGlzIHRoZSBzZW12ZXIub3JnIHZlcnNpb24gb2YgdGhlIHNwZWMgdGhhdCBpdCBpbXBsZW1lbnRzXG4vLyBOb3QgbmVjZXNzYXJpbHkgdGhlIHBhY2thZ2UgdmVyc2lvbiBvZiB0aGlzIGNvZGUuXG5leHBvcnRzLlNFTVZFUl9TUEVDX1ZFUlNJT04gPSAnMi4wLjAnO1xuXG52YXIgTUFYX0xFTkdUSCA9IDI1NjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgOTAwNzE5OTI1NDc0MDk5MTtcblxuLy8gTWF4IHNhZmUgc2VnbWVudCBsZW5ndGggZm9yIGNvZXJjaW9uLlxudmFyIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggPSAxNjtcblxuLy8gVGhlIGFjdHVhbCByZWdleHBzIGdvIG9uIGV4cG9ydHMucmVcbnZhciByZSA9IGV4cG9ydHMucmUgPSBbXTtcbnZhciBzcmMgPSBleHBvcnRzLnNyYyA9IFtdO1xudmFyIFIgPSAwO1xuXG4vLyBUaGUgZm9sbG93aW5nIFJlZ3VsYXIgRXhwcmVzc2lvbnMgY2FuIGJlIHVzZWQgZm9yIHRva2VuaXppbmcsXG4vLyB2YWxpZGF0aW5nLCBhbmQgcGFyc2luZyBTZW1WZXIgdmVyc2lvbiBzdHJpbmdzLlxuXG4vLyAjIyBOdW1lcmljIElkZW50aWZpZXJcbi8vIEEgc2luZ2xlIGAwYCwgb3IgYSBub24temVybyBkaWdpdCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgZGlnaXRzLlxuXG52YXIgTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJdID0gJzB8WzEtOV1cXFxcZConO1xudmFyIE5VTUVSSUNJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gPSAnWzAtOV0rJztcblxuXG4vLyAjIyBOb24tbnVtZXJpYyBJZGVudGlmaWVyXG4vLyBaZXJvIG9yIG1vcmUgZGlnaXRzLCBmb2xsb3dlZCBieSBhIGxldHRlciBvciBoeXBoZW4sIGFuZCB0aGVuIHplcm8gb3Jcbi8vIG1vcmUgbGV0dGVycywgZGlnaXRzLCBvciBoeXBoZW5zLlxuXG52YXIgTk9OTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTk9OTlVNRVJJQ0lERU5USUZJRVJdID0gJ1xcXFxkKlthLXpBLVotXVthLXpBLVowLTktXSonO1xuXG5cbi8vICMjIE1haW4gVmVyc2lvblxuLy8gVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuXG52YXIgTUFJTlZFUlNJT04gPSBSKys7XG5zcmNbTUFJTlZFUlNJT05dID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSXSArICcpXFxcXC4nICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICcoJyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBNQUlOVkVSU0lPTkxPT1NFID0gUisrO1xuc3JjW01BSU5WRVJTSU9OTE9PU0VdID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJyknO1xuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uIElkZW50aWZpZXJcbi8vIEEgbnVtZXJpYyBpZGVudGlmaWVyLCBvciBhIG5vbi1udW1lcmljIGlkZW50aWZpZXIuXG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUiA9IFIrKztcbnNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gPSAnKD86JyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd8JyArIHNyY1tOT05OVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdID0gJyg/OicgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgc3JjW05PTk5VTUVSSUNJREVOVElGSUVSXSArICcpJztcblxuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uXG4vLyBIeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvblxuLy8gaWRlbnRpZmllcnMuXG5cbnZhciBQUkVSRUxFQVNFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VdID0gJyg/Oi0oJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gKyAnKSopKSc7XG5cbnZhciBQUkVSRUxFQVNFTE9PU0UgPSBSKys7XG5zcmNbUFJFUkVMRUFTRUxPT1NFXSA9ICcoPzotPygnICsgc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdICtcbiAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXSArICcpKikpJztcblxuLy8gIyMgQnVpbGQgTWV0YWRhdGEgSWRlbnRpZmllclxuLy8gQW55IGNvbWJpbmF0aW9uIG9mIGRpZ2l0cywgbGV0dGVycywgb3IgaHlwaGVucy5cblxudmFyIEJVSUxESURFTlRJRklFUiA9IFIrKztcbnNyY1tCVUlMRElERU5USUZJRVJdID0gJ1swLTlBLVphLXotXSsnO1xuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YVxuLy8gUGx1cyBzaWduLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwZXJpb2Qtc2VwYXJhdGVkIGJ1aWxkIG1ldGFkYXRhXG4vLyBpZGVudGlmaWVycy5cblxudmFyIEJVSUxEID0gUisrO1xuc3JjW0JVSUxEXSA9ICcoPzpcXFxcKygnICsgc3JjW0JVSUxESURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICcoPzpcXFxcLicgKyBzcmNbQlVJTERJREVOVElGSUVSXSArICcpKikpJztcblxuXG4vLyAjIyBGdWxsIFZlcnNpb24gU3RyaW5nXG4vLyBBIG1haW4gdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kXG4vLyBidWlsZCBtZXRhZGF0YS5cblxuLy8gTm90ZSB0aGF0IHRoZSBvbmx5IG1ham9yLCBtaW5vciwgcGF0Y2gsIGFuZCBwcmUtcmVsZWFzZSBzZWN0aW9ucyBvZlxuLy8gdGhlIHZlcnNpb24gc3RyaW5nIGFyZSBjYXB0dXJpbmcgZ3JvdXBzLiAgVGhlIGJ1aWxkIG1ldGFkYXRhIGlzIG5vdCBhXG4vLyBjYXB0dXJpbmcgZ3JvdXAsIGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBldmVyIGJlIHVzZWQgaW4gdmVyc2lvblxuLy8gY29tcGFyaXNvbi5cblxudmFyIEZVTEwgPSBSKys7XG52YXIgRlVMTFBMQUlOID0gJ3Y/JyArIHNyY1tNQUlOVkVSU0lPTl0gK1xuICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFXSArICc/JyArXG4gICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/Jztcblxuc3JjW0ZVTExdID0gJ14nICsgRlVMTFBMQUlOICsgJyQnO1xuXG4vLyBsaWtlIGZ1bGwsIGJ1dCBhbGxvd3MgdjEuMi4zIGFuZCA9MS4yLjMsIHdoaWNoIHBlb3BsZSBkbyBzb21ldGltZXMuXG4vLyBhbHNvLCAxLjAuMGFscGhhMSAocHJlcmVsZWFzZSB3aXRob3V0IHRoZSBoeXBoZW4pIHdoaWNoIGlzIHByZXR0eVxuLy8gY29tbW9uIGluIHRoZSBucG0gcmVnaXN0cnkuXG52YXIgTE9PU0VQTEFJTiA9ICdbdj1cXFxcc10qJyArIHNyY1tNQUlOVkVSU0lPTkxPT1NFXSArXG4gICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/JztcblxudmFyIExPT1NFID0gUisrO1xuc3JjW0xPT1NFXSA9ICdeJyArIExPT1NFUExBSU4gKyAnJCc7XG5cbnZhciBHVExUID0gUisrO1xuc3JjW0dUTFRdID0gJygoPzo8fD4pPz0/KSc7XG5cbi8vIFNvbWV0aGluZyBsaWtlIFwiMi4qXCIgb3IgXCIxLjIueFwiLlxuLy8gTm90ZSB0aGF0IFwieC54XCIgaXMgYSB2YWxpZCB4UmFuZ2UgaWRlbnRpZmVyLCBtZWFuaW5nIFwiYW55IHZlcnNpb25cIlxuLy8gT25seSB0aGUgZmlyc3QgaXRlbSBpcyBzdHJpY3RseSByZXF1aXJlZC5cbnZhciBYUkFOR0VJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSA9IHNyY1tOVU1FUklDSURFTlRJRklFUkxPT1NFXSArICd8eHxYfFxcXFwqJztcbnZhciBYUkFOR0VJREVOVElGSUVSID0gUisrO1xuc3JjW1hSQU5HRUlERU5USUZJRVJdID0gc3JjW05VTUVSSUNJREVOVElGSUVSXSArICd8eHxYfFxcXFwqJztcblxudmFyIFhSQU5HRVBMQUlOID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOXSA9ICdbdj1cXFxcc10qKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUl0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnKD86XFxcXC4oJyArIHNyY1tYUkFOR0VJREVOVElGSUVSXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJyg/OicgKyBzcmNbUFJFUkVMRUFTRV0gKyAnKT8nICtcbiAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAnKT8pPyc7XG5cbnZhciBYUkFOR0VQTEFJTkxPT1NFID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOTE9PU0VdID0gJ1t2PVxcXFxzXSooJyArIHNyY1tYUkFOR0VJREVOVElGSUVSTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJMT09TRV0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKD86JyArIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJyk/JyArXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcpPyk/JztcblxudmFyIFhSQU5HRSA9IFIrKztcbnNyY1tYUkFOR0VdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKicgKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFhSQU5HRUxPT1NFID0gUisrO1xuc3JjW1hSQU5HRUxPT1NFXSA9ICdeJyArIHNyY1tHVExUXSArICdcXFxccyonICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyQnO1xuXG4vLyBDb2VyY2lvbi5cbi8vIEV4dHJhY3QgYW55dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSBhIHBhcnQgb2YgYSB2YWxpZCBzZW12ZXJcbnZhciBDT0VSQ0UgPSBSKys7XG5zcmNbQ09FUkNFXSA9ICcoPzpefFteXFxcXGRdKScgK1xuICAgICAgICAgICAgICAnKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSknICtcbiAgICAgICAgICAgICAgJyg/OlxcXFwuKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSkpPycgK1xuICAgICAgICAgICAgICAnKD86XFxcXC4oXFxcXGR7MSwnICsgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSCArICd9KSk/JyArXG4gICAgICAgICAgICAgICcoPzokfFteXFxcXGRdKSc7XG5cbi8vIFRpbGRlIHJhbmdlcy5cbi8vIE1lYW5pbmcgaXMgXCJyZWFzb25hYmx5IGF0IG9yIGdyZWF0ZXIgdGhhblwiXG52YXIgTE9ORVRJTERFID0gUisrO1xuc3JjW0xPTkVUSUxERV0gPSAnKD86fj4/KSc7XG5cbnZhciBUSUxERVRSSU0gPSBSKys7XG5zcmNbVElMREVUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbTE9ORVRJTERFXSArICdcXFxccysnO1xucmVbVElMREVUUklNXSA9IG5ldyBSZWdFeHAoc3JjW1RJTERFVFJJTV0sICdnJyk7XG52YXIgdGlsZGVUcmltUmVwbGFjZSA9ICckMX4nO1xuXG52YXIgVElMREUgPSBSKys7XG5zcmNbVElMREVdID0gJ14nICsgc3JjW0xPTkVUSUxERV0gKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFRJTERFTE9PU0UgPSBSKys7XG5zcmNbVElMREVMT09TRV0gPSAnXicgKyBzcmNbTE9ORVRJTERFXSArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICckJztcblxuLy8gQ2FyZXQgcmFuZ2VzLlxuLy8gTWVhbmluZyBpcyBcImF0IGxlYXN0IGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoXCJcbnZhciBMT05FQ0FSRVQgPSBSKys7XG5zcmNbTE9ORUNBUkVUXSA9ICcoPzpcXFxcXiknO1xuXG52YXIgQ0FSRVRUUklNID0gUisrO1xuc3JjW0NBUkVUVFJJTV0gPSAnKFxcXFxzKiknICsgc3JjW0xPTkVDQVJFVF0gKyAnXFxcXHMrJztcbnJlW0NBUkVUVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDQVJFVFRSSU1dLCAnZycpO1xudmFyIGNhcmV0VHJpbVJlcGxhY2UgPSAnJDFeJztcblxudmFyIENBUkVUID0gUisrO1xuc3JjW0NBUkVUXSA9ICdeJyArIHNyY1tMT05FQ0FSRVRdICsgc3JjW1hSQU5HRVBMQUlOXSArICckJztcbnZhciBDQVJFVExPT1NFID0gUisrO1xuc3JjW0NBUkVUTE9PU0VdID0gJ14nICsgc3JjW0xPTkVDQVJFVF0gKyBzcmNbWFJBTkdFUExBSU5MT09TRV0gKyAnJCc7XG5cbi8vIEEgc2ltcGxlIGd0L2x0L2VxIHRoaW5nLCBvciBqdXN0IFwiXCIgdG8gaW5kaWNhdGUgXCJhbnkgdmVyc2lvblwiXG52YXIgQ09NUEFSQVRPUkxPT1NFID0gUisrO1xuc3JjW0NPTVBBUkFUT1JMT09TRV0gPSAnXicgKyBzcmNbR1RMVF0gKyAnXFxcXHMqKCcgKyBMT09TRVBMQUlOICsgJykkfF4kJztcbnZhciBDT01QQVJBVE9SID0gUisrO1xuc3JjW0NPTVBBUkFUT1JdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKignICsgRlVMTFBMQUlOICsgJykkfF4kJztcblxuXG4vLyBBbiBleHByZXNzaW9uIHRvIHN0cmlwIGFueSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIGd0bHQgYW5kIHRoZSB0aGluZ1xuLy8gaXQgbW9kaWZpZXMsIHNvIHRoYXQgYD4gMS4yLjNgID09PiBgPjEuMi4zYFxudmFyIENPTVBBUkFUT1JUUklNID0gUisrO1xuc3JjW0NPTVBBUkFUT1JUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbR1RMVF0gK1xuICAgICAgICAgICAgICAgICAgICAgICdcXFxccyooJyArIExPT1NFUExBSU4gKyAnfCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknO1xuXG4vLyB0aGlzIG9uZSBoYXMgdG8gdXNlIHRoZSAvZyBmbGFnXG5yZVtDT01QQVJBVE9SVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDT01QQVJBVE9SVFJJTV0sICdnJyk7XG52YXIgY29tcGFyYXRvclRyaW1SZXBsYWNlID0gJyQxJDIkMyc7XG5cblxuLy8gU29tZXRoaW5nIGxpa2UgYDEuMi4zIC0gMS4yLjRgXG4vLyBOb3RlIHRoYXQgdGhlc2UgYWxsIHVzZSB0aGUgbG9vc2UgZm9ybSwgYmVjYXVzZSB0aGV5J2xsIGJlXG4vLyBjaGVja2VkIGFnYWluc3QgZWl0aGVyIHRoZSBzdHJpY3Qgb3IgbG9vc2UgY29tcGFyYXRvciBmb3JtXG4vLyBsYXRlci5cbnZhciBIWVBIRU5SQU5HRSA9IFIrKztcbnNyY1tIWVBIRU5SQU5HRV0gPSAnXlxcXFxzKignICsgc3JjW1hSQU5HRVBMQUlOXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJ1xcXFxzKy1cXFxccysnICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnXFxcXHMqJCc7XG5cbnZhciBIWVBIRU5SQU5HRUxPT1NFID0gUisrO1xuc3JjW0hZUEhFTlJBTkdFTE9PU0VdID0gJ15cXFxccyooJyArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxcXHMrLVxcXFxzKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXFxccyokJztcblxuLy8gU3RhciByYW5nZXMgYmFzaWNhbGx5IGp1c3QgYWxsb3cgYW55dGhpbmcgYXQgYWxsLlxudmFyIFNUQVIgPSBSKys7XG5zcmNbU1RBUl0gPSAnKDx8Pik/PT9cXFxccypcXFxcKic7XG5cbi8vIENvbXBpbGUgdG8gYWN0dWFsIHJlZ2V4cCBvYmplY3RzLlxuLy8gQWxsIGFyZSBmbGFnLWZyZWUsIHVubGVzcyB0aGV5IHdlcmUgY3JlYXRlZCBhYm92ZSB3aXRoIGEgZmxhZy5cbmZvciAodmFyIGkgPSAwOyBpIDwgUjsgaSsrKSB7XG4gIGRlYnVnKGksIHNyY1tpXSk7XG4gIGlmICghcmVbaV0pXG4gICAgcmVbaV0gPSBuZXcgUmVnRXhwKHNyY1tpXSk7XG59XG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmZ1bmN0aW9uIHBhcnNlKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKVxuICAgIHJldHVybiB2ZXJzaW9uO1xuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgaWYgKHZlcnNpb24ubGVuZ3RoID4gTUFYX0xFTkdUSClcbiAgICByZXR1cm4gbnVsbDtcblxuICB2YXIgciA9IGxvb3NlID8gcmVbTE9PU0VdIDogcmVbRlVMTF07XG4gIGlmICghci50ZXN0KHZlcnNpb24pKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydHMudmFsaWQgPSB2YWxpZDtcbmZ1bmN0aW9uIHZhbGlkKHZlcnNpb24sIGxvb3NlKSB7XG4gIHZhciB2ID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gdiA/IHYudmVyc2lvbiA6IG51bGw7XG59XG5cblxuZXhwb3J0cy5jbGVhbiA9IGNsZWFuO1xuZnVuY3Rpb24gY2xlYW4odmVyc2lvbiwgbG9vc2UpIHtcbiAgdmFyIHMgPSBwYXJzZSh2ZXJzaW9uLnRyaW0oKS5yZXBsYWNlKC9eWz12XSsvLCAnJyksIGxvb3NlKTtcbiAgcmV0dXJuIHMgPyBzLnZlcnNpb24gOiBudWxsO1xufVxuXG5leHBvcnRzLlNlbVZlciA9IFNlbVZlcjtcblxuZnVuY3Rpb24gU2VtVmVyKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKSB7XG4gICAgaWYgKHZlcnNpb24ubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgZWxzZVxuICAgICAgdmVyc2lvbiA9IHZlcnNpb24udmVyc2lvbjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmVyc2lvbiBpcyBsb25nZXIgdGhhbiAnICsgTUFYX0xFTkdUSCArICcgY2hhcmFjdGVycycpXG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuXG4gIGRlYnVnKCdTZW1WZXInLCB2ZXJzaW9uLCBsb29zZSk7XG4gIHRoaXMubG9vc2UgPSBsb29zZTtcbiAgdmFyIG0gPSB2ZXJzaW9uLnRyaW0oKS5tYXRjaChsb29zZSA/IHJlW0xPT1NFXSA6IHJlW0ZVTExdKTtcblxuICBpZiAoIW0pXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBWZXJzaW9uOiAnICsgdmVyc2lvbik7XG5cbiAgdGhpcy5yYXcgPSB2ZXJzaW9uO1xuXG4gIC8vIHRoZXNlIGFyZSBhY3R1YWxseSBudW1iZXJzXG4gIHRoaXMubWFqb3IgPSArbVsxXTtcbiAgdGhpcy5taW5vciA9ICttWzJdO1xuICB0aGlzLnBhdGNoID0gK21bM107XG5cbiAgaWYgKHRoaXMubWFqb3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWFqb3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWFqb3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMubWlub3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWlub3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWlub3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMucGF0Y2ggPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMucGF0Y2ggPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgcGF0Y2ggdmVyc2lvbicpXG5cbiAgLy8gbnVtYmVyaWZ5IGFueSBwcmVyZWxlYXNlIG51bWVyaWMgaWRzXG4gIGlmICghbVs0XSlcbiAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgZWxzZVxuICAgIHRoaXMucHJlcmVsZWFzZSA9IG1bNF0uc3BsaXQoJy4nKS5tYXAoZnVuY3Rpb24oaWQpIHtcbiAgICAgIGlmICgvXlswLTldKyQvLnRlc3QoaWQpKSB7XG4gICAgICAgIHZhciBudW0gPSAraWQ7XG4gICAgICAgIGlmIChudW0gPj0gMCAmJiBudW0gPCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICAgIHJldHVybiBudW07XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG5cbiAgdGhpcy5idWlsZCA9IG1bNV0gPyBtWzVdLnNwbGl0KCcuJykgOiBbXTtcbiAgdGhpcy5mb3JtYXQoKTtcbn1cblxuU2VtVmVyLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy52ZXJzaW9uID0gdGhpcy5tYWpvciArICcuJyArIHRoaXMubWlub3IgKyAnLicgKyB0aGlzLnBhdGNoO1xuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICB0aGlzLnZlcnNpb24gKz0gJy0nICsgdGhpcy5wcmVyZWxlYXNlLmpvaW4oJy4nKTtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGRlYnVnKCdTZW1WZXIuY29tcGFyZScsIHRoaXMudmVyc2lvbiwgdGhpcy5sb29zZSwgb3RoZXIpO1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gdGhpcy5jb21wYXJlTWFpbihvdGhlcikgfHwgdGhpcy5jb21wYXJlUHJlKG90aGVyKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZU1haW4gPSBmdW5jdGlvbihvdGhlcikge1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWFqb3IsIG90aGVyLm1ham9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWlub3IsIG90aGVyLm1pbm9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMucGF0Y2gsIG90aGVyLnBhdGNoKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZVByZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSlcbiAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMubG9vc2UpO1xuXG4gIC8vIE5PVCBoYXZpbmcgYSBwcmVyZWxlYXNlIGlzID4gaGF2aW5nIG9uZVxuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpXG4gICAgcmV0dXJuIC0xO1xuICBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiBvdGhlci5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICByZXR1cm4gMTtcbiAgZWxzZSBpZiAoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGggJiYgIW90aGVyLnByZXJlbGVhc2UubGVuZ3RoKVxuICAgIHJldHVybiAwO1xuXG4gIHZhciBpID0gMDtcbiAgZG8ge1xuICAgIHZhciBhID0gdGhpcy5wcmVyZWxlYXNlW2ldO1xuICAgIHZhciBiID0gb3RoZXIucHJlcmVsZWFzZVtpXTtcbiAgICBkZWJ1ZygncHJlcmVsZWFzZSBjb21wYXJlJywgaSwgYSwgYik7XG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMDtcbiAgICBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChhID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gLTE7XG4gICAgZWxzZSBpZiAoYSA9PT0gYilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYik7XG4gIH0gd2hpbGUgKCsraSk7XG59O1xuXG4vLyBwcmVtaW5vciB3aWxsIGJ1bXAgdGhlIHZlcnNpb24gdXAgdG8gdGhlIG5leHQgbWlub3IgcmVsZWFzZSwgYW5kIGltbWVkaWF0ZWx5XG4vLyBkb3duIHRvIHByZS1yZWxlYXNlLiBwcmVtYWpvciBhbmQgcHJlcGF0Y2ggd29yayB0aGUgc2FtZSB3YXkuXG5TZW1WZXIucHJvdG90eXBlLmluYyA9IGZ1bmN0aW9uKHJlbGVhc2UsIGlkZW50aWZpZXIpIHtcbiAgc3dpdGNoIChyZWxlYXNlKSB7XG4gICAgY2FzZSAncHJlbWFqb3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IgPSAwO1xuICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncHJlbWlub3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ByZXBhdGNoJzpcbiAgICAgIC8vIElmIHRoaXMgaXMgYWxyZWFkeSBhIHByZXJlbGVhc2UsIGl0IHdpbGwgYnVtcCB0byB0aGUgbmV4dCB2ZXJzaW9uXG4gICAgICAvLyBkcm9wIGFueSBwcmVyZWxlYXNlcyB0aGF0IG1pZ2h0IGFscmVhZHkgZXhpc3QsIHNpbmNlIHRoZXkgYXJlIG5vdFxuICAgICAgLy8gcmVsZXZhbnQgYXQgdGhpcyBwb2ludC5cbiAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllcik7XG4gICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllcik7XG4gICAgICBicmVhaztcbiAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYSBub24tcHJlcmVsZWFzZSB2ZXJzaW9uLCB0aGlzIGFjdHMgdGhlIHNhbWUgYXNcbiAgICAvLyBwcmVwYXRjaC5cbiAgICBjYXNlICdwcmVyZWxlYXNlJzpcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLmluYygncGF0Y2gnLCBpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWFqb3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1tYWpvciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1ham9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1ham9yLlxuICAgICAgLy8gMS4wLjAtNSBidW1wcyB0byAxLjAuMFxuICAgICAgLy8gMS4xLjAgYnVtcHMgdG8gMi4wLjBcbiAgICAgIGlmICh0aGlzLm1pbm9yICE9PSAwIHx8IHRoaXMucGF0Y2ggIT09IDAgfHwgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5taW5vciA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWlub3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1taW5vciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1pbm9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1pbm9yLlxuICAgICAgLy8gMS4yLjAtNSBidW1wcyB0byAxLjIuMFxuICAgICAgLy8gMS4yLjEgYnVtcHMgdG8gMS4zLjBcbiAgICAgIGlmICh0aGlzLnBhdGNoICE9PSAwIHx8IHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApXG4gICAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMucGF0Y2ggPSAwO1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW107XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYXRjaCc6XG4gICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHByZS1yZWxlYXNlIHZlcnNpb24sIGl0IHdpbGwgaW5jcmVtZW50IHRoZSBwYXRjaC5cbiAgICAgIC8vIElmIGl0IGlzIGEgcHJlLXJlbGVhc2UgaXQgd2lsbCBidW1wIHVwIHRvIHRoZSBzYW1lIHBhdGNoIHZlcnNpb24uXG4gICAgICAvLyAxLjIuMC01IHBhdGNoZXMgdG8gMS4yLjBcbiAgICAgIC8vIDEuMi4wIHBhdGNoZXMgdG8gMS4yLjFcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLnBhdGNoKys7XG4gICAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgICAgIGJyZWFrO1xuICAgIC8vIFRoaXMgcHJvYmFibHkgc2hvdWxkbid0IGJlIHVzZWQgcHVibGljbHkuXG4gICAgLy8gMS4wLjAgXCJwcmVcIiB3b3VsZCBiZWNvbWUgMS4wLjAtMCB3aGljaCBpcyB0aGUgd3JvbmcgZGlyZWN0aW9uLlxuICAgIGNhc2UgJ3ByZSc6XG4gICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5wcmVyZWxlYXNlLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXJlbGVhc2VbaV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2VbaV0rKztcbiAgICAgICAgICAgIGkgPSAtMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IC0xKSAvLyBkaWRuJ3QgaW5jcmVtZW50IGFueXRoaW5nXG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLnB1c2goMCk7XG4gICAgICB9XG4gICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAvLyAxLjIuMC1iZXRhLjEgYnVtcHMgdG8gMS4yLjAtYmV0YS4yLFxuICAgICAgICAvLyAxLjIuMC1iZXRhLmZvb2JseiBvciAxLjIuMC1iZXRhIGJ1bXBzIHRvIDEuMi4wLWJldGEuMFxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlWzBdID09PSBpZGVudGlmaWVyKSB7XG4gICAgICAgICAgaWYgKGlzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkpXG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbaWRlbnRpZmllciwgMF07XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtpZGVudGlmaWVyLCAwXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpbmNyZW1lbnQgYXJndW1lbnQ6ICcgKyByZWxlYXNlKTtcbiAgfVxuICB0aGlzLmZvcm1hdCgpO1xuICB0aGlzLnJhdyA9IHRoaXMudmVyc2lvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5leHBvcnRzLmluYyA9IGluYztcbmZ1bmN0aW9uIGluYyh2ZXJzaW9uLCByZWxlYXNlLCBsb29zZSwgaWRlbnRpZmllcikge1xuICBpZiAodHlwZW9mKGxvb3NlKSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZGVudGlmaWVyID0gbG9vc2U7XG4gICAgbG9vc2UgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKS5pbmMocmVsZWFzZSwgaWRlbnRpZmllcikudmVyc2lvbjtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnRzLmRpZmYgPSBkaWZmO1xuZnVuY3Rpb24gZGlmZih2ZXJzaW9uMSwgdmVyc2lvbjIpIHtcbiAgaWYgKGVxKHZlcnNpb24xLCB2ZXJzaW9uMikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdjEgPSBwYXJzZSh2ZXJzaW9uMSk7XG4gICAgdmFyIHYyID0gcGFyc2UodmVyc2lvbjIpO1xuICAgIGlmICh2MS5wcmVyZWxlYXNlLmxlbmd0aCB8fCB2Mi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdtYWpvcicgfHwga2V5ID09PSAnbWlub3InIHx8IGtleSA9PT0gJ3BhdGNoJykge1xuICAgICAgICAgIGlmICh2MVtrZXldICE9PSB2MltrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ByZScra2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICdwcmVyZWxlYXNlJztcbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICBpZiAoa2V5ID09PSAnbWFqb3InIHx8IGtleSA9PT0gJ21pbm9yJyB8fCBrZXkgPT09ICdwYXRjaCcpIHtcbiAgICAgICAgaWYgKHYxW2tleV0gIT09IHYyW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuY29tcGFyZUlkZW50aWZpZXJzID0gY29tcGFyZUlkZW50aWZpZXJzO1xuXG52YXIgbnVtZXJpYyA9IC9eWzAtOV0rJC87XG5mdW5jdGlvbiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYikge1xuICB2YXIgYW51bSA9IG51bWVyaWMudGVzdChhKTtcbiAgdmFyIGJudW0gPSBudW1lcmljLnRlc3QoYik7XG5cbiAgaWYgKGFudW0gJiYgYm51bSkge1xuICAgIGEgPSArYTtcbiAgICBiID0gK2I7XG4gIH1cblxuICByZXR1cm4gKGFudW0gJiYgIWJudW0pID8gLTEgOlxuICAgICAgICAgKGJudW0gJiYgIWFudW0pID8gMSA6XG4gICAgICAgICBhIDwgYiA/IC0xIDpcbiAgICAgICAgIGEgPiBiID8gMSA6XG4gICAgICAgICAwO1xufVxuXG5leHBvcnRzLnJjb21wYXJlSWRlbnRpZmllcnMgPSByY29tcGFyZUlkZW50aWZpZXJzO1xuZnVuY3Rpb24gcmNvbXBhcmVJZGVudGlmaWVycyhhLCBiKSB7XG4gIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYiwgYSk7XG59XG5cbmV4cG9ydHMubWFqb3IgPSBtYWpvcjtcbmZ1bmN0aW9uIG1ham9yKGEsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5tYWpvcjtcbn1cblxuZXhwb3J0cy5taW5vciA9IG1pbm9yO1xuZnVuY3Rpb24gbWlub3IoYSwgbG9vc2UpIHtcbiAgcmV0dXJuIG5ldyBTZW1WZXIoYSwgbG9vc2UpLm1pbm9yO1xufVxuXG5leHBvcnRzLnBhdGNoID0gcGF0Y2g7XG5mdW5jdGlvbiBwYXRjaChhLCBsb29zZSkge1xuICByZXR1cm4gbmV3IFNlbVZlcihhLCBsb29zZSkucGF0Y2g7XG59XG5cbmV4cG9ydHMuY29tcGFyZSA9IGNvbXBhcmU7XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5jb21wYXJlKG5ldyBTZW1WZXIoYiwgbG9vc2UpKTtcbn1cblxuZXhwb3J0cy5jb21wYXJlTG9vc2UgPSBjb21wYXJlTG9vc2U7XG5mdW5jdGlvbiBjb21wYXJlTG9vc2UoYSwgYikge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCB0cnVlKTtcbn1cblxuZXhwb3J0cy5yY29tcGFyZSA9IHJjb21wYXJlO1xuZnVuY3Rpb24gcmNvbXBhcmUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYiwgYSwgbG9vc2UpO1xufVxuXG5leHBvcnRzLnNvcnQgPSBzb3J0O1xuZnVuY3Rpb24gc29ydChsaXN0LCBsb29zZSkge1xuICByZXR1cm4gbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5jb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMucnNvcnQgPSByc29ydDtcbmZ1bmN0aW9uIHJzb3J0KGxpc3QsIGxvb3NlKSB7XG4gIHJldHVybiBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBleHBvcnRzLnJjb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMuZ3QgPSBndDtcbmZ1bmN0aW9uIGd0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA+IDA7XG59XG5cbmV4cG9ydHMubHQgPSBsdDtcbmZ1bmN0aW9uIGx0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA8IDA7XG59XG5cbmV4cG9ydHMuZXEgPSBlcTtcbmZ1bmN0aW9uIGVxKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA9PT0gMDtcbn1cblxuZXhwb3J0cy5uZXEgPSBuZXE7XG5mdW5jdGlvbiBuZXEoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpICE9PSAwO1xufVxuXG5leHBvcnRzLmd0ZSA9IGd0ZTtcbmZ1bmN0aW9uIGd0ZShhLCBiLCBsb29zZSkge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMDtcbn1cblxuZXhwb3J0cy5sdGUgPSBsdGU7XG5mdW5jdGlvbiBsdGUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpIDw9IDA7XG59XG5cbmV4cG9ydHMuY21wID0gY21wO1xuZnVuY3Rpb24gY21wKGEsIG9wLCBiLCBsb29zZSkge1xuICB2YXIgcmV0O1xuICBzd2l0Y2ggKG9wKSB7XG4gICAgY2FzZSAnPT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIGEgPSBhLnZlcnNpb247XG4gICAgICBpZiAodHlwZW9mIGIgPT09ICdvYmplY3QnKSBiID0gYi52ZXJzaW9uO1xuICAgICAgcmV0ID0gYSA9PT0gYjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJyE9PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKSBhID0gYS52ZXJzaW9uO1xuICAgICAgaWYgKHR5cGVvZiBiID09PSAnb2JqZWN0JykgYiA9IGIudmVyc2lvbjtcbiAgICAgIHJldCA9IGEgIT09IGI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICcnOiBjYXNlICc9JzogY2FzZSAnPT0nOiByZXQgPSBlcShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGNhc2UgJyE9JzogcmV0ID0gbmVxKGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPic6IHJldCA9IGd0KGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPj0nOiByZXQgPSBndGUoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8JzogcmV0ID0gbHQoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8PSc6IHJldCA9IGx0ZShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgb3BlcmF0b3I6ICcgKyBvcCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0cy5Db21wYXJhdG9yID0gQ29tcGFyYXRvcjtcbmZ1bmN0aW9uIENvbXBhcmF0b3IoY29tcCwgbG9vc2UpIHtcbiAgaWYgKGNvbXAgaW5zdGFuY2VvZiBDb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXAubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIGNvbXA7XG4gICAgZWxzZVxuICAgICAgY29tcCA9IGNvbXAudmFsdWU7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpXG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcblxuICBkZWJ1ZygnY29tcGFyYXRvcicsIGNvbXAsIGxvb3NlKTtcbiAgdGhpcy5sb29zZSA9IGxvb3NlO1xuICB0aGlzLnBhcnNlKGNvbXApO1xuXG4gIGlmICh0aGlzLnNlbXZlciA9PT0gQU5ZKVxuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgZWxzZVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wZXJhdG9yICsgdGhpcy5zZW12ZXIudmVyc2lvbjtcblxuICBkZWJ1ZygnY29tcCcsIHRoaXMpO1xufVxuXG52YXIgQU5ZID0ge307XG5Db21wYXJhdG9yLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKGNvbXApIHtcbiAgdmFyIHIgPSB0aGlzLmxvb3NlID8gcmVbQ09NUEFSQVRPUkxPT1NFXSA6IHJlW0NPTVBBUkFUT1JdO1xuICB2YXIgbSA9IGNvbXAubWF0Y2gocik7XG5cbiAgaWYgKCFtKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY29tcGFyYXRvcjogJyArIGNvbXApO1xuXG4gIHRoaXMub3BlcmF0b3IgPSBtWzFdO1xuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJz0nKVxuICAgIHRoaXMub3BlcmF0b3IgPSAnJztcblxuICAvLyBpZiBpdCBsaXRlcmFsbHkgaXMganVzdCAnPicgb3IgJycgdGhlbiBhbGxvdyBhbnl0aGluZy5cbiAgaWYgKCFtWzJdKVxuICAgIHRoaXMuc2VtdmVyID0gQU5ZO1xuICBlbHNlXG4gICAgdGhpcy5zZW12ZXIgPSBuZXcgU2VtVmVyKG1bMl0sIHRoaXMubG9vc2UpO1xufTtcblxuQ29tcGFyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmFsdWU7XG59O1xuXG5Db21wYXJhdG9yLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24odmVyc2lvbikge1xuICBkZWJ1ZygnQ29tcGFyYXRvci50ZXN0JywgdmVyc2lvbiwgdGhpcy5sb29zZSk7XG5cbiAgaWYgKHRoaXMuc2VtdmVyID09PSBBTlkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnc3RyaW5nJylcbiAgICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY21wKHZlcnNpb24sIHRoaXMub3BlcmF0b3IsIHRoaXMuc2VtdmVyLCB0aGlzLmxvb3NlKTtcbn07XG5cbkNvbXBhcmF0b3IucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbihjb21wLCBsb29zZSkge1xuICBpZiAoIShjb21wIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhIENvbXBhcmF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHZhciByYW5nZVRtcDtcblxuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJycpIHtcbiAgICByYW5nZVRtcCA9IG5ldyBSYW5nZShjb21wLnZhbHVlLCBsb29zZSk7XG4gICAgcmV0dXJuIHNhdGlzZmllcyh0aGlzLnZhbHVlLCByYW5nZVRtcCwgbG9vc2UpO1xuICB9IGVsc2UgaWYgKGNvbXAub3BlcmF0b3IgPT09ICcnKSB7XG4gICAgcmFuZ2VUbXAgPSBuZXcgUmFuZ2UodGhpcy52YWx1ZSwgbG9vc2UpO1xuICAgIHJldHVybiBzYXRpc2ZpZXMoY29tcC5zZW12ZXIsIHJhbmdlVG1wLCBsb29zZSk7XG4gIH1cblxuICB2YXIgc2FtZURpcmVjdGlvbkluY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJz49JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPicpO1xuICB2YXIgc2FtZURpcmVjdGlvbkRlY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPD0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc8JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpO1xuICB2YXIgc2FtZVNlbVZlciA9IHRoaXMuc2VtdmVyLnZlcnNpb24gPT09IGNvbXAuc2VtdmVyLnZlcnNpb247XG4gIHZhciBkaWZmZXJlbnREaXJlY3Rpb25zSW5jbHVzaXZlID1cbiAgICAodGhpcy5vcGVyYXRvciA9PT0gJz49JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPD0nKSAmJlxuICAgIChjb21wLm9wZXJhdG9yID09PSAnPj0nIHx8IGNvbXAub3BlcmF0b3IgPT09ICc8PScpO1xuICB2YXIgb3Bwb3NpdGVEaXJlY3Rpb25zTGVzc1RoYW4gPVxuICAgIGNtcCh0aGlzLnNlbXZlciwgJzwnLCBjb21wLnNlbXZlciwgbG9vc2UpICYmXG4gICAgKCh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpKTtcbiAgdmFyIG9wcG9zaXRlRGlyZWN0aW9uc0dyZWF0ZXJUaGFuID1cbiAgICBjbXAodGhpcy5zZW12ZXIsICc+JywgY29tcC5zZW12ZXIsIGxvb3NlKSAmJlxuICAgICgodGhpcy5vcGVyYXRvciA9PT0gJzw9JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPCcpICYmXG4gICAgKGNvbXAub3BlcmF0b3IgPT09ICc+PScgfHwgY29tcC5vcGVyYXRvciA9PT0gJz4nKSk7XG5cbiAgcmV0dXJuIHNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIHx8IHNhbWVEaXJlY3Rpb25EZWNyZWFzaW5nIHx8XG4gICAgKHNhbWVTZW1WZXIgJiYgZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSkgfHxcbiAgICBvcHBvc2l0ZURpcmVjdGlvbnNMZXNzVGhhbiB8fCBvcHBvc2l0ZURpcmVjdGlvbnNHcmVhdGVyVGhhbjtcbn07XG5cblxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuZnVuY3Rpb24gUmFuZ2UocmFuZ2UsIGxvb3NlKSB7XG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIFJhbmdlKSB7XG4gICAgaWYgKHJhbmdlLmxvb3NlID09PSBsb29zZSkge1xuICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnJhdywgbG9vc2UpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIENvbXBhcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnZhbHVlLCBsb29zZSk7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmFuZ2UpKVxuICAgIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB0aGlzLmxvb3NlID0gbG9vc2U7XG5cbiAgLy8gRmlyc3QsIHNwbGl0IGJhc2VkIG9uIGJvb2xlYW4gb3IgfHxcbiAgdGhpcy5yYXcgPSByYW5nZTtcbiAgdGhpcy5zZXQgPSByYW5nZS5zcGxpdCgvXFxzKlxcfFxcfFxccyovKS5tYXAoZnVuY3Rpb24ocmFuZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVJhbmdlKHJhbmdlLnRyaW0oKSk7XG4gIH0sIHRoaXMpLmZpbHRlcihmdW5jdGlvbihjKSB7XG4gICAgLy8gdGhyb3cgb3V0IGFueSB0aGF0IGFyZSBub3QgcmVsZXZhbnQgZm9yIHdoYXRldmVyIHJlYXNvblxuICAgIHJldHVybiBjLmxlbmd0aDtcbiAgfSk7XG5cbiAgaWYgKCF0aGlzLnNldC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFNlbVZlciBSYW5nZTogJyArIHJhbmdlKTtcbiAgfVxuXG4gIHRoaXMuZm9ybWF0KCk7XG59XG5cblJhbmdlLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yYW5nZSA9IHRoaXMuc2V0Lm1hcChmdW5jdGlvbihjb21wcykge1xuICAgIHJldHVybiBjb21wcy5qb2luKCcgJykudHJpbSgpO1xuICB9KS5qb2luKCd8fCcpLnRyaW0oKTtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUucGFyc2VSYW5nZSA9IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBsb29zZSA9IHRoaXMubG9vc2U7XG4gIHJhbmdlID0gcmFuZ2UudHJpbSgpO1xuICBkZWJ1ZygncmFuZ2UnLCByYW5nZSwgbG9vc2UpO1xuICAvLyBgMS4yLjMgLSAxLjIuNGAgPT4gYD49MS4yLjMgPD0xLjIuNGBcbiAgdmFyIGhyID0gbG9vc2UgPyByZVtIWVBIRU5SQU5HRUxPT1NFXSA6IHJlW0hZUEhFTlJBTkdFXTtcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKGhyLCBoeXBoZW5SZXBsYWNlKTtcbiAgZGVidWcoJ2h5cGhlbiByZXBsYWNlJywgcmFuZ2UpO1xuICAvLyBgPiAxLjIuMyA8IDEuMi41YCA9PiBgPjEuMi4zIDwxLjIuNWBcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW0NPTVBBUkFUT1JUUklNXSwgY29tcGFyYXRvclRyaW1SZXBsYWNlKTtcbiAgZGVidWcoJ2NvbXBhcmF0b3IgdHJpbScsIHJhbmdlLCByZVtDT01QQVJBVE9SVFJJTV0pO1xuXG4gIC8vIGB+IDEuMi4zYCA9PiBgfjEuMi4zYFxuICByYW5nZSA9IHJhbmdlLnJlcGxhY2UocmVbVElMREVUUklNXSwgdGlsZGVUcmltUmVwbGFjZSk7XG5cbiAgLy8gYF4gMS4yLjNgID0+IGBeMS4yLjNgXG4gIHJhbmdlID0gcmFuZ2UucmVwbGFjZShyZVtDQVJFVFRSSU1dLCBjYXJldFRyaW1SZXBsYWNlKTtcblxuICAvLyBub3JtYWxpemUgc3BhY2VzXG4gIHJhbmdlID0gcmFuZ2Uuc3BsaXQoL1xccysvKS5qb2luKCcgJyk7XG5cbiAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIHJhbmdlIGlzIGNvbXBsZXRlbHkgdHJpbW1lZCBhbmRcbiAgLy8gcmVhZHkgdG8gYmUgc3BsaXQgaW50byBjb21wYXJhdG9ycy5cblxuICB2YXIgY29tcFJlID0gbG9vc2UgPyByZVtDT01QQVJBVE9STE9PU0VdIDogcmVbQ09NUEFSQVRPUl07XG4gIHZhciBzZXQgPSByYW5nZS5zcGxpdCgnICcpLm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIHBhcnNlQ29tcGFyYXRvcihjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKS5zcGxpdCgvXFxzKy8pO1xuICBpZiAodGhpcy5sb29zZSkge1xuICAgIC8vIGluIGxvb3NlIG1vZGUsIHRocm93IG91dCBhbnkgdGhhdCBhcmUgbm90IHZhbGlkIGNvbXBhcmF0b3JzXG4gICAgc2V0ID0gc2V0LmZpbHRlcihmdW5jdGlvbihjb21wKSB7XG4gICAgICByZXR1cm4gISFjb21wLm1hdGNoKGNvbXBSZSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNldDtcbn07XG5cblJhbmdlLnByb3RvdHlwZS5pbnRlcnNlY3RzID0gZnVuY3Rpb24ocmFuZ2UsIGxvb3NlKSB7XG4gIGlmICghKHJhbmdlIGluc3RhbmNlb2YgUmFuZ2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYSBSYW5nZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2V0LnNvbWUoZnVuY3Rpb24odGhpc0NvbXBhcmF0b3JzKSB7XG4gICAgcmV0dXJuIHRoaXNDb21wYXJhdG9ycy5ldmVyeShmdW5jdGlvbih0aGlzQ29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHJhbmdlLnNldC5zb21lKGZ1bmN0aW9uKHJhbmdlQ29tcGFyYXRvcnMpIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlQ29tcGFyYXRvcnMuZXZlcnkoZnVuY3Rpb24ocmFuZ2VDb21wYXJhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNDb21wYXJhdG9yLmludGVyc2VjdHMocmFuZ2VDb21wYXJhdG9yLCBsb29zZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gTW9zdGx5IGp1c3QgZm9yIHRlc3RpbmcgYW5kIGxlZ2FjeSBBUEkgcmVhc29uc1xuZXhwb3J0cy50b0NvbXBhcmF0b3JzID0gdG9Db21wYXJhdG9ycztcbmZ1bmN0aW9uIHRvQ29tcGFyYXRvcnMocmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKS5zZXQubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gY29tcC5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfSkuam9pbignICcpLnRyaW0oKS5zcGxpdCgnICcpO1xuICB9KTtcbn1cblxuLy8gY29tcHJpc2VkIG9mIHhyYW5nZXMsIHRpbGRlcywgc3RhcnMsIGFuZCBndGx0J3MgYXQgdGhpcyBwb2ludC5cbi8vIGFscmVhZHkgcmVwbGFjZWQgdGhlIGh5cGhlbiByYW5nZXNcbi8vIHR1cm4gaW50byBhIHNldCBvZiBKVVNUIGNvbXBhcmF0b3JzLlxuZnVuY3Rpb24gcGFyc2VDb21wYXJhdG9yKGNvbXAsIGxvb3NlKSB7XG4gIGRlYnVnKCdjb21wJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlQ2FyZXRzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlVGlsZGVzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ3RpbGRlcycsIGNvbXApO1xuICBjb21wID0gcmVwbGFjZVhSYW5nZXMoY29tcCwgbG9vc2UpO1xuICBkZWJ1ZygneHJhbmdlJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlU3RhcnMoY29tcCwgbG9vc2UpO1xuICBkZWJ1Zygnc3RhcnMnLCBjb21wKTtcbiAgcmV0dXJuIGNvbXA7XG59XG5cbmZ1bmN0aW9uIGlzWChpZCkge1xuICByZXR1cm4gIWlkIHx8IGlkLnRvTG93ZXJDYXNlKCkgPT09ICd4JyB8fCBpZCA9PT0gJyonO1xufVxuXG4vLyB+LCB+PiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIH4yLCB+Mi54LCB+Mi54LngsIH4+Miwgfj4yLnggfj4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIH4yLjAsIH4yLjAueCwgfj4yLjAsIH4+Mi4wLnggLS0+ID49Mi4wLjAgPDIuMS4wXG4vLyB+MS4yLCB+MS4yLngsIH4+MS4yLCB+PjEuMi54IC0tPiA+PTEuMi4wIDwxLjMuMFxuLy8gfjEuMi4zLCB+PjEuMi4zIC0tPiA+PTEuMi4zIDwxLjMuMFxuLy8gfjEuMi4wLCB+PjEuMi4wIC0tPiA+PTEuMi4wIDwxLjMuMFxuZnVuY3Rpb24gcmVwbGFjZVRpbGRlcyhjb21wLCBsb29zZSkge1xuICByZXR1cm4gY29tcC50cmltKCkuc3BsaXQoL1xccysvKS5tYXAoZnVuY3Rpb24oY29tcCkge1xuICAgIHJldHVybiByZXBsYWNlVGlsZGUoY29tcCwgbG9vc2UpO1xuICB9KS5qb2luKCcgJyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VUaWxkZShjb21wLCBsb29zZSkge1xuICB2YXIgciA9IGxvb3NlID8gcmVbVElMREVMT09TRV0gOiByZVtUSUxERV07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygndGlsZGUnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKVxuICAgICAgLy8gfjEuMiA9PSA+PTEuMi4wIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICBlbHNlIGlmIChwcikge1xuICAgICAgZGVidWcoJ3JlcGxhY2VUaWxkZSBwcicsIHByKTtcbiAgICAgIGlmIChwci5jaGFyQXQoMCkgIT09ICctJylcbiAgICAgICAgcHIgPSAnLScgKyBwcjtcbiAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9IGVsc2VcbiAgICAgIC8vIH4xLjIuMyA9PSA+PTEuMi4zIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcblxuICAgIGRlYnVnKCd0aWxkZSByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG4vLyBeIC0tPiAqIChhbnksIGtpbmRhIHNpbGx5KVxuLy8gXjIsIF4yLngsIF4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4yLjAsIF4yLjAueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4xLjIsIF4xLjIueCAtLT4gPj0xLjIuMCA8Mi4wLjBcbi8vIF4xLjIuMyAtLT4gPj0xLjIuMyA8Mi4wLjBcbi8vIF4xLjIuMCAtLT4gPj0xLjIuMCA8Mi4wLjBcbmZ1bmN0aW9uIHJlcGxhY2VDYXJldHMoY29tcCwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZUNhcmV0KGNvbXAsIGxvb3NlKTtcbiAgfSkuam9pbignICcpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ2FyZXQoY29tcCwgbG9vc2UpIHtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCwgbG9vc2UpO1xuICB2YXIgciA9IGxvb3NlID8gcmVbQ0FSRVRMT09TRV0gOiByZVtDQVJFVF07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygnY2FyZXQnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKSB7XG4gICAgICBpZiAoTSA9PT0gJzAnKVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2UgaWYgKHByKSB7XG4gICAgICBkZWJ1ZygncmVwbGFjZUNhcmV0IHByJywgcHIpO1xuICAgICAgaWYgKHByLmNoYXJBdCgwKSAhPT0gJy0nKVxuICAgICAgICBwciA9ICctJyArIHByO1xuICAgICAgaWYgKE0gPT09ICcwJykge1xuICAgICAgICBpZiAobSA9PT0gJzAnKVxuICAgICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICsgcHIgK1xuICAgICAgICAgICAgICAgICcgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICcgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ25vIHByJyk7XG4gICAgICBpZiAoTSA9PT0gJzAnKSB7XG4gICAgICAgIGlmIChtID09PSAnMCcpXG4gICAgICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgJyA8JyArICgrTSArIDEpICsgJy4wLjAnO1xuICAgIH1cblxuICAgIGRlYnVnKCdjYXJldCByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlWFJhbmdlcyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVhSYW5nZXMnLCBjb21wLCBsb29zZSk7XG4gIHJldHVybiBjb21wLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSkge1xuICBjb21wID0gY29tcC50cmltKCk7XG4gIHZhciByID0gbG9vc2UgPyByZVtYUkFOR0VMT09TRV0gOiByZVtYUkFOR0VdO1xuICByZXR1cm4gY29tcC5yZXBsYWNlKHIsIGZ1bmN0aW9uKHJldCwgZ3RsdCwgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygneFJhbmdlJywgY29tcCwgcmV0LCBndGx0LCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHhNID0gaXNYKE0pO1xuICAgIHZhciB4bSA9IHhNIHx8IGlzWChtKTtcbiAgICB2YXIgeHAgPSB4bSB8fCBpc1gocCk7XG4gICAgdmFyIGFueVggPSB4cDtcblxuICAgIGlmIChndGx0ID09PSAnPScgJiYgYW55WClcbiAgICAgIGd0bHQgPSAnJztcblxuICAgIGlmICh4TSkge1xuICAgICAgaWYgKGd0bHQgPT09ICc+JyB8fCBndGx0ID09PSAnPCcpIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBhbGxvd2VkXG4gICAgICAgIHJldCA9ICc8MC4wLjAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBmb3JiaWRkZW5cbiAgICAgICAgcmV0ID0gJyonO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3RsdCAmJiBhbnlYKSB7XG4gICAgICAvLyByZXBsYWNlIFggd2l0aCAwXG4gICAgICBpZiAoeG0pXG4gICAgICAgIG0gPSAwO1xuICAgICAgaWYgKHhwKVxuICAgICAgICBwID0gMDtcblxuICAgICAgaWYgKGd0bHQgPT09ICc+Jykge1xuICAgICAgICAvLyA+MSA9PiA+PTIuMC4wXG4gICAgICAgIC8vID4xLjIgPT4gPj0xLjMuMFxuICAgICAgICAvLyA+MS4yLjMgPT4gPj0gMS4yLjRcbiAgICAgICAgZ3RsdCA9ICc+PSc7XG4gICAgICAgIGlmICh4bSkge1xuICAgICAgICAgIE0gPSArTSArIDE7XG4gICAgICAgICAgbSA9IDA7XG4gICAgICAgICAgcCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoeHApIHtcbiAgICAgICAgICBtID0gK20gKyAxO1xuICAgICAgICAgIHAgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGd0bHQgPT09ICc8PScpIHtcbiAgICAgICAgLy8gPD0wLjcueCBpcyBhY3R1YWxseSA8MC44LjAsIHNpbmNlIGFueSAwLjcueCBzaG91bGRcbiAgICAgICAgLy8gcGFzcy4gIFNpbWlsYXJseSwgPD03LnggaXMgYWN0dWFsbHkgPDguMC4wLCBldGMuXG4gICAgICAgIGd0bHQgPSAnPCc7XG4gICAgICAgIGlmICh4bSlcbiAgICAgICAgICBNID0gK00gKyAxO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbSA9ICttICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0ID0gZ3RsdCArIE0gKyAnLicgKyBtICsgJy4nICsgcDtcbiAgICB9IGVsc2UgaWYgKHhtKSB7XG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgfSBlbHNlIGlmICh4cCkge1xuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9XG5cbiAgICBkZWJ1ZygneFJhbmdlIHJldHVybicsIHJldCk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cblxuLy8gQmVjYXVzZSAqIGlzIEFORC1lZCB3aXRoIGV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgY29tcGFyYXRvcixcbi8vIGFuZCAnJyBtZWFucyBcImFueSB2ZXJzaW9uXCIsIGp1c3QgcmVtb3ZlIHRoZSAqcyBlbnRpcmVseS5cbmZ1bmN0aW9uIHJlcGxhY2VTdGFycyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVN0YXJzJywgY29tcCwgbG9vc2UpO1xuICAvLyBMb29zZW5lc3MgaXMgaWdub3JlZCBoZXJlLiAgc3RhciBpcyBhbHdheXMgYXMgbG9vc2UgYXMgaXQgZ2V0cyFcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnJlcGxhY2UocmVbU1RBUl0sICcnKTtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gc3RyaW5nLnJlcGxhY2UocmVbSFlQSEVOUkFOR0VdKVxuLy8gTSwgbSwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkXG4vLyAxLjIgLSAzLjQuNSA9PiA+PTEuMi4wIDw9My40LjVcbi8vIDEuMi4zIC0gMy40ID0+ID49MS4yLjAgPDMuNS4wIEFueSAzLjQueCB3aWxsIGRvXG4vLyAxLjIgLSAzLjQgPT4gPj0xLjIuMCA8My41LjBcbmZ1bmN0aW9uIGh5cGhlblJlcGxhY2UoJDAsXG4gICAgICAgICAgICAgICAgICAgICAgIGZyb20sIGZNLCBmbSwgZnAsIGZwciwgZmIsXG4gICAgICAgICAgICAgICAgICAgICAgIHRvLCB0TSwgdG0sIHRwLCB0cHIsIHRiKSB7XG5cbiAgaWYgKGlzWChmTSkpXG4gICAgZnJvbSA9ICcnO1xuICBlbHNlIGlmIChpc1goZm0pKVxuICAgIGZyb20gPSAnPj0nICsgZk0gKyAnLjAuMCc7XG4gIGVsc2UgaWYgKGlzWChmcCkpXG4gICAgZnJvbSA9ICc+PScgKyBmTSArICcuJyArIGZtICsgJy4wJztcbiAgZWxzZVxuICAgIGZyb20gPSAnPj0nICsgZnJvbTtcblxuICBpZiAoaXNYKHRNKSlcbiAgICB0byA9ICcnO1xuICBlbHNlIGlmIChpc1godG0pKVxuICAgIHRvID0gJzwnICsgKCt0TSArIDEpICsgJy4wLjAnO1xuICBlbHNlIGlmIChpc1godHApKVxuICAgIHRvID0gJzwnICsgdE0gKyAnLicgKyAoK3RtICsgMSkgKyAnLjAnO1xuICBlbHNlIGlmICh0cHIpXG4gICAgdG8gPSAnPD0nICsgdE0gKyAnLicgKyB0bSArICcuJyArIHRwICsgJy0nICsgdHByO1xuICBlbHNlXG4gICAgdG8gPSAnPD0nICsgdG87XG5cbiAgcmV0dXJuIChmcm9tICsgJyAnICsgdG8pLnRyaW0oKTtcbn1cblxuXG4vLyBpZiBBTlkgb2YgdGhlIHNldHMgbWF0Y2ggQUxMIG9mIGl0cyBjb21wYXJhdG9ycywgdGhlbiBwYXNzXG5SYW5nZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKHZlcnNpb24pIHtcbiAgaWYgKCF2ZXJzaW9uKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKVxuICAgIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIHRoaXMubG9vc2UpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGVzdFNldCh0aGlzLnNldFtpXSwgdmVyc2lvbikpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiB0ZXN0U2V0KHNldCwgdmVyc2lvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKykge1xuICAgIGlmICghc2V0W2ldLnRlc3QodmVyc2lvbikpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgIC8vIEZpbmQgdGhlIHNldCBvZiB2ZXJzaW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyhzZXRbaV0uc2VtdmVyKTtcbiAgICAgIGlmIChzZXRbaV0uc2VtdmVyID09PSBBTlkpXG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBpZiAoc2V0W2ldLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGFsbG93ZWQgPSBzZXRbaV0uc2VtdmVyO1xuICAgICAgICBpZiAoYWxsb3dlZC5tYWpvciA9PT0gdmVyc2lvbi5tYWpvciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5taW5vciA9PT0gdmVyc2lvbi5taW5vciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5wYXRjaCA9PT0gdmVyc2lvbi5wYXRjaClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWZXJzaW9uIGhhcyBhIC1wcmUsIGJ1dCBpdCdzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2UgbGlrZS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0cy5zYXRpc2ZpZXMgPSBzYXRpc2ZpZXM7XG5mdW5jdGlvbiBzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHRyeSB7XG4gICAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbik7XG59XG5cbmV4cG9ydHMubWF4U2F0aXNmeWluZyA9IG1heFNhdGlzZnlpbmc7XG5mdW5jdGlvbiBtYXhTYXRpc2Z5aW5nKHZlcnNpb25zLCByYW5nZSwgbG9vc2UpIHtcbiAgdmFyIG1heCA9IG51bGw7XG4gIHZhciBtYXhTViA9IG51bGw7XG4gIHRyeSB7XG4gICAgdmFyIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSk7XG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7IC8vIHNhdGlzZmllcyh2LCByYW5nZSwgbG9vc2UpXG4gICAgICBpZiAoIW1heCB8fCBtYXhTVi5jb21wYXJlKHYpID09PSAtMSkgeyAvLyBjb21wYXJlKG1heCwgdiwgdHJ1ZSlcbiAgICAgICAgbWF4ID0gdjtcbiAgICAgICAgbWF4U1YgPSBuZXcgU2VtVmVyKG1heCwgbG9vc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG1heDtcbn1cblxuZXhwb3J0cy5taW5TYXRpc2Z5aW5nID0gbWluU2F0aXNmeWluZztcbmZ1bmN0aW9uIG1pblNhdGlzZnlpbmcodmVyc2lvbnMsIHJhbmdlLCBsb29zZSkge1xuICB2YXIgbWluID0gbnVsbDtcbiAgdmFyIG1pblNWID0gbnVsbDtcbiAgdHJ5IHtcbiAgICB2YXIgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHsgLy8gc2F0aXNmaWVzKHYsIHJhbmdlLCBsb29zZSlcbiAgICAgIGlmICghbWluIHx8IG1pblNWLmNvbXBhcmUodikgPT09IDEpIHsgLy8gY29tcGFyZShtaW4sIHYsIHRydWUpXG4gICAgICAgIG1pbiA9IHY7XG4gICAgICAgIG1pblNWID0gbmV3IFNlbVZlcihtaW4sIGxvb3NlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBtaW47XG59XG5cbmV4cG9ydHMudmFsaWRSYW5nZSA9IHZhbGlkUmFuZ2U7XG5mdW5jdGlvbiB2YWxpZFJhbmdlKHJhbmdlLCBsb29zZSkge1xuICB0cnkge1xuICAgIC8vIFJldHVybiAnKicgaW5zdGVhZCBvZiAnJyBzbyB0aGF0IHRydXRoaW5lc3Mgd29ya3MuXG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIGl0J3MgaW52YWxpZCBhbnl3YXlcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSkucmFuZ2UgfHwgJyonO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZVxuZXhwb3J0cy5sdHIgPSBsdHI7XG5mdW5jdGlvbiBsdHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPCcsIGxvb3NlKTtcbn1cblxuLy8gRGV0ZXJtaW5lIGlmIHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGUgdmVyc2lvbnMgcG9zc2libGUgaW4gdGhlIHJhbmdlLlxuZXhwb3J0cy5ndHIgPSBndHI7XG5mdW5jdGlvbiBndHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPicsIGxvb3NlKTtcbn1cblxuZXhwb3J0cy5vdXRzaWRlID0gb3V0c2lkZTtcbmZ1bmN0aW9uIG91dHNpZGUodmVyc2lvbiwgcmFuZ2UsIGhpbG8sIGxvb3NlKSB7XG4gIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKTtcbiAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB2YXIgZ3RmbiwgbHRlZm4sIGx0Zm4sIGNvbXAsIGVjb21wO1xuICBzd2l0Y2ggKGhpbG8pIHtcbiAgICBjYXNlICc+JzpcbiAgICAgIGd0Zm4gPSBndDtcbiAgICAgIGx0ZWZuID0gbHRlO1xuICAgICAgbHRmbiA9IGx0O1xuICAgICAgY29tcCA9ICc+JztcbiAgICAgIGVjb21wID0gJz49JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzwnOlxuICAgICAgZ3RmbiA9IGx0O1xuICAgICAgbHRlZm4gPSBndGU7XG4gICAgICBsdGZuID0gZ3Q7XG4gICAgICBjb21wID0gJzwnO1xuICAgICAgZWNvbXAgPSAnPD0nO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ011c3QgcHJvdmlkZSBhIGhpbG8gdmFsIG9mIFwiPFwiIG9yIFwiPlwiJyk7XG4gIH1cblxuICAvLyBJZiBpdCBzYXRpc2lmZXMgdGhlIHJhbmdlIGl0IGlzIG5vdCBvdXRzaWRlXG4gIGlmIChzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZyb20gbm93IG9uLCB2YXJpYWJsZSB0ZXJtcyBhcmUgYXMgaWYgd2UncmUgaW4gXCJndHJcIiBtb2RlLlxuICAvLyBidXQgbm90ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmxpcHBlZCBmb3IgdGhlIFwibHRyXCIgZnVuY3Rpb24uXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZS5zZXQubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV07XG5cbiAgICB2YXIgaGlnaCA9IG51bGw7XG4gICAgdmFyIGxvdyA9IG51bGw7XG5cbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBhcmF0b3IpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yLnNlbXZlciA9PT0gQU5ZKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSBuZXcgQ29tcGFyYXRvcignPj0wLjAuMCcpXG4gICAgICB9XG4gICAgICBoaWdoID0gaGlnaCB8fCBjb21wYXJhdG9yO1xuICAgICAgbG93ID0gbG93IHx8IGNvbXBhcmF0b3I7XG4gICAgICBpZiAoZ3Rmbihjb21wYXJhdG9yLnNlbXZlciwgaGlnaC5zZW12ZXIsIGxvb3NlKSkge1xuICAgICAgICBoaWdoID0gY29tcGFyYXRvcjtcbiAgICAgIH0gZWxzZSBpZiAobHRmbihjb21wYXJhdG9yLnNlbXZlciwgbG93LnNlbXZlciwgbG9vc2UpKSB7XG4gICAgICAgIGxvdyA9IGNvbXBhcmF0b3I7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGUgZWRnZSB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGEgb3BlcmF0b3IgdGhlbiBvdXIgdmVyc2lvblxuICAgIC8vIGlzbid0IG91dHNpZGUgaXRcbiAgICBpZiAoaGlnaC5vcGVyYXRvciA9PT0gY29tcCB8fCBoaWdoLm9wZXJhdG9yID09PSBlY29tcCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBsb3dlc3QgdmVyc2lvbiBjb21wYXJhdG9yIGhhcyBhbiBvcGVyYXRvciBhbmQgb3VyIHZlcnNpb25cbiAgICAvLyBpcyBsZXNzIHRoYW4gaXQgdGhlbiBpdCBpc24ndCBoaWdoZXIgdGhhbiB0aGUgcmFuZ2VcbiAgICBpZiAoKCFsb3cub3BlcmF0b3IgfHwgbG93Lm9wZXJhdG9yID09PSBjb21wKSAmJlxuICAgICAgICBsdGVmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobG93Lm9wZXJhdG9yID09PSBlY29tcCAmJiBsdGZuKHZlcnNpb24sIGxvdy5zZW12ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnRzLnByZXJlbGVhc2UgPSBwcmVyZWxlYXNlO1xuZnVuY3Rpb24gcHJlcmVsZWFzZSh2ZXJzaW9uLCBsb29zZSkge1xuICB2YXIgcGFyc2VkID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gKHBhcnNlZCAmJiBwYXJzZWQucHJlcmVsZWFzZS5sZW5ndGgpID8gcGFyc2VkLnByZXJlbGVhc2UgOiBudWxsO1xufVxuXG5leHBvcnRzLmludGVyc2VjdHMgPSBpbnRlcnNlY3RzO1xuZnVuY3Rpb24gaW50ZXJzZWN0cyhyMSwgcjIsIGxvb3NlKSB7XG4gIHIxID0gbmV3IFJhbmdlKHIxLCBsb29zZSlcbiAgcjIgPSBuZXcgUmFuZ2UocjIsIGxvb3NlKVxuICByZXR1cm4gcjEuaW50ZXJzZWN0cyhyMilcbn1cblxuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5mdW5jdGlvbiBjb2VyY2UodmVyc2lvbikge1xuICBpZiAodmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlcilcbiAgICByZXR1cm4gdmVyc2lvbjtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHZhciBtYXRjaCA9IHZlcnNpb24ubWF0Y2gocmVbQ09FUkNFXSk7XG5cbiAgaWYgKG1hdGNoID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHBhcnNlKChtYXRjaFsxXSB8fCAnMCcpICsgJy4nICsgKG1hdGNoWzJdIHx8ICcwJykgKyAnLicgKyAobWF0Y2hbM10gfHwgJzAnKSk7IFxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/semver/semver.js","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/semver/semver.js","sourceMapSources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///node_modules/semver/semver.js","webpack:///node_modules/process/browser.js"]},"level":0} {"tag":"runtime.sourcemap","timestamp":1588425101074,"message":"SourceMap: mapping webpack:///node_modules/process/browser.js => /Users/roblou/code/vscode/node_modules/process/browser.js, via sourceMapPathOverrides entry - /^webpack:\\/\\/.*?\\/(.*?)$/i","level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101074,"message":"Creating source from source map","metadata":{"inputUrl":"webpack:///node_modules/process/browser.js","inputMap":{"sourceMapUrl":"data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VtdmVyL3NlbXZlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsImEiLCJpIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJkZWJ1ZyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0RFQlVHIiwidGVzdCIsImFyZ3MiLCJBcnJheSIsInNsaWNlIiwiYXJndW1lbnRzIiwidW5zaGlmdCIsImNvbnNvbGUiLCJsb2ciLCJhcHBseSIsIlNFTVZFUl9TUEVDX1ZFUlNJT04iLCJNQVhfTEVOR1RIIiwiTUFYX1NBRkVfSU5URUdFUiIsIk51bWJlciIsInJlIiwic3JjIiwiUiIsIk5VTUVSSUNJREVOVElGSUVSIiwiTlVNRVJJQ0lERU5USUZJRVJMT09TRSIsIk5PTk5VTUVSSUNJREVOVElGSUVSIiwiTUFJTlZFUlNJT04iLCJNQUlOVkVSU0lPTkxPT1NFIiwiUFJFUkVMRUFTRUlERU5USUZJRVIiLCJQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFIiwiUFJFUkVMRUFTRSIsIlBSRVJFTEVBU0VMT09TRSIsIkJVSUxESURFTlRJRklFUiIsIkJVSUxEIiwiRlVMTCIsIkZVTExQTEFJTiIsIkxPT1NFUExBSU4iLCJMT09TRSIsIkdUTFQiLCJYUkFOR0VJREVOVElGSUVSTE9PU0UiLCJYUkFOR0VJREVOVElGSUVSIiwiWFJBTkdFUExBSU4iLCJYUkFOR0VQTEFJTkxPT1NFIiwiWFJBTkdFIiwiWFJBTkdFTE9PU0UiLCJDT0VSQ0UiLCJMT05FVElMREUiLCJUSUxERVRSSU0iLCJSZWdFeHAiLCJUSUxERSIsIlRJTERFTE9PU0UiLCJMT05FQ0FSRVQiLCJDQVJFVFRSSU0iLCJDQVJFVCIsIkNBUkVUTE9PU0UiLCJDT01QQVJBVE9STE9PU0UiLCJDT01QQVJBVE9SIiwiQ09NUEFSQVRPUlRSSU0iLCJIWVBIRU5SQU5HRSIsIkhZUEhFTlJBTkdFTE9PU0UiLCJTVEFSIiwicGFyc2UiLCJ2ZXJzaW9uIiwibG9vc2UiLCJTZW1WZXIiLCJsZW5ndGgiLCJlciIsIlR5cGVFcnJvciIsInRyaW0iLCJtYXRjaCIsInJhdyIsIm1ham9yIiwibWlub3IiLCJwYXRjaCIsInByZXJlbGVhc2UiLCJzcGxpdCIsIm1hcCIsImlkIiwibnVtIiwiYnVpbGQiLCJmb3JtYXQiLCJ2YWxpZCIsInYiLCJjbGVhbiIsInJlcGxhY2UiLCJqb2luIiwidG9TdHJpbmciLCJjb21wYXJlIiwib3RoZXIiLCJjb21wYXJlTWFpbiIsImNvbXBhcmVQcmUiLCJjb21wYXJlSWRlbnRpZmllcnMiLCJiIiwidW5kZWZpbmVkIiwiaW5jIiwicmVsZWFzZSIsImlkZW50aWZpZXIiLCJwdXNoIiwiaXNOYU4iLCJFcnJvciIsImRpZmYiLCJ2ZXJzaW9uMSIsInZlcnNpb24yIiwiZXEiLCJ2MSIsInYyIiwibnVtZXJpYyIsImFudW0iLCJibnVtIiwiZ3QiLCJsdCIsIm5lcSIsImd0ZSIsImx0ZSIsImNtcCIsIm9wIiwicmV0IiwiQ29tcGFyYXRvciIsImNvbXAiLCJzZW12ZXIiLCJBTlkiLCJvcGVyYXRvciIsInJjb21wYXJlSWRlbnRpZmllcnMiLCJjb21wYXJlTG9vc2UiLCJyY29tcGFyZSIsInNvcnQiLCJsaXN0IiwicnNvcnQiLCJSYW5nZSIsInJhbmdlIiwic2V0IiwicGFyc2VSYW5nZSIsImZpbHRlciIsImlzWCIsInRvTG93ZXJDYXNlIiwiaHlwaGVuUmVwbGFjZSIsIiQwIiwiZnJvbSIsImZNIiwiZm0iLCJmcCIsImZwciIsImZiIiwidG8iLCJ0TSIsInRtIiwidHAiLCJ0cHIiLCJ0YiIsInRlc3RTZXQiLCJhbGxvd2VkIiwic2F0aXNmaWVzIiwib3V0c2lkZSIsImhpbG8iLCJndGZuIiwibHRlZm4iLCJsdGZuIiwiZWNvbXAiLCJjb21wYXJhdG9ycyIsImhpZ2giLCJsb3ciLCJmb3JFYWNoIiwiY29tcGFyYXRvciIsImludGVyc2VjdHMiLCJyYW5nZVRtcCIsInNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIiwic2FtZURpcmVjdGlvbkRlY3JlYXNpbmciLCJzYW1lU2VtVmVyIiwiZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSIsIm9wcG9zaXRlRGlyZWN0aW9uc0xlc3NUaGFuIiwib3Bwb3NpdGVEaXJlY3Rpb25zR3JlYXRlclRoYW4iLCJjb21wcyIsImhyIiwiY29tcFJlIiwiXyIsIk0iLCJwciIsImNoYXJBdCIsInJlcGxhY2VDYXJldCIsInJlcGxhY2VDYXJldHMiLCJyZXBsYWNlVGlsZGUiLCJyZXBsYWNlVGlsZGVzIiwiZ3RsdCIsInhNIiwieG0iLCJ4cCIsInJlcGxhY2VYUmFuZ2UiLCJyZXBsYWNlWFJhbmdlcyIsInJlcGxhY2VTdGFycyIsInBhcnNlQ29tcGFyYXRvciIsInNvbWUiLCJ0aGlzQ29tcGFyYXRvcnMiLCJldmVyeSIsInRoaXNDb21wYXJhdG9yIiwicmFuZ2VDb21wYXJhdG9ycyIsInJhbmdlQ29tcGFyYXRvciIsInRvQ29tcGFyYXRvcnMiLCJtYXhTYXRpc2Z5aW5nIiwidmVyc2lvbnMiLCJtYXgiLCJtYXhTViIsInJhbmdlT2JqIiwibWluU2F0aXNmeWluZyIsIm1pbiIsIm1pblNWIiwidmFsaWRSYW5nZSIsImx0ciIsImd0ciIsInBhcnNlZCIsInIxIiwicjIiLCJjb2VyY2UiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImUiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImNvbmNhdCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibGVuIiwicnVuIiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsImFycmF5Iiwibm9vcCIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiYXJndiIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDaEQsR0FBc0IsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsU0FDYixHQUFxQixtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILE9BQ1AsQ0FDSixJQUFJSyxFQUFJTCxJQUNSLElBQUksSUFBSU0sS0FBS0QsR0FBdUIsaUJBQVpKLFFBQXVCQSxRQUFVRixHQUFNTyxHQUFLRCxFQUFFQyxJQVB4RSxDQVNtQixvQkFBVEMsS0FBdUJBLEtBQU9DLE1BQU0sV0FDOUMsTyxZQ1RFLElBQUlDLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FB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QUFVN0MsR0FHaENnUSxFQUFNN0gsS0FBSyxJQUFJd0ksRUFBS2hCLEVBQUtqTixJQUNKLElBQWpCc04sRUFBTTdKLFFBQWlCOEosR0FDdkJQLEVBQVdXLElBU25CTSxFQUFLMU8sVUFBVXVPLElBQU0sV0FDakJ0USxLQUFLeVAsSUFBSTFNLE1BQU0sS0FBTS9DLEtBQUswUSxRQUU5QnRPLEVBQVF5TyxNQUFRLFVBQ2hCek8sRUFBUTBPLFNBQVUsRUFDbEIxTyxFQUFRQyxJQUFNLEdBQ2RELEVBQVEyTyxLQUFPLEdBQ2YzTyxFQUFRMEQsUUFBVSxHQUNsQjFELEVBQVFrTSxTQUFXLEdBSW5CbE0sRUFBUTRPLEdBQUtMLEVBQ2J2TyxFQUFRNk8sWUFBY04sRUFDdEJ2TyxFQUFROE8sS0FBT1AsRUFDZnZPLEVBQVErTyxJQUFNUixFQUNkdk8sRUFBUWdQLGVBQWlCVCxFQUN6QnZPLEVBQVFpUCxtQkFBcUJWLEVBQzdCdk8sRUFBUWtQLEtBQU9YLEVBQ2Z2TyxFQUFRbVAsZ0JBQWtCWixFQUMxQnZPLEVBQVFvUCxvQkFBc0JiLEVBRTlCdk8sRUFBUXFQLFVBQVksU0FBVS9RLEdBQVEsTUFBTyxJQUU3QzBCLEVBQVFzUCxRQUFVLFNBQVVoUixHQUN4QixNQUFNLElBQUl5SCxNQUFNLHFDQUdwQi9GLEVBQVF1UCxJQUFNLFdBQWMsTUFBTyxLQUNuQ3ZQLEVBQVF3UCxNQUFRLFNBQVVDLEdBQ3RCLE1BQU0sSUFBSTFKLE1BQU0sbUNBRXBCL0YsRUFBUTBQLE1BQVEsV0FBYSxPQUFPIiwiZmlsZSI6InNlbXZlci11bWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IFNlbVZlcjtcblxuLy8gVGhlIGRlYnVnIGZ1bmN0aW9uIGlzIGV4Y2x1ZGVkIGVudGlyZWx5IGZyb20gdGhlIG1pbmlmaWVkIHZlcnNpb24uXG4vKiBub21pbiAqLyB2YXIgZGVidWc7XG4vKiBub21pbiAqLyBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmXG4gICAgLyogbm9taW4gKi8gcHJvY2Vzcy5lbnYgJiZcbiAgICAvKiBub21pbiAqLyBwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmXG4gICAgLyogbm9taW4gKi8gL1xcYnNlbXZlclxcYi9pLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRykpXG4gIC8qIG5vbWluICovIGRlYnVnID0gZnVuY3Rpb24oKSB7XG4gICAgLyogbm9taW4gKi8gdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIC8qIG5vbWluICovIGFyZ3MudW5zaGlmdCgnU0VNVkVSJyk7XG4gICAgLyogbm9taW4gKi8gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gICAgLyogbm9taW4gKi8gfTtcbi8qIG5vbWluICovIGVsc2VcbiAgLyogbm9taW4gKi8gZGVidWcgPSBmdW5jdGlvbigpIHt9O1xuXG4vLyBOb3RlOiB0aGlzIGlzIHRoZSBzZW12ZXIub3JnIHZlcnNpb24gb2YgdGhlIHNwZWMgdGhhdCBpdCBpbXBsZW1lbnRzXG4vLyBOb3QgbmVjZXNzYXJpbHkgdGhlIHBhY2thZ2UgdmVyc2lvbiBvZiB0aGlzIGNvZGUuXG5leHBvcnRzLlNFTVZFUl9TUEVDX1ZFUlNJT04gPSAnMi4wLjAnO1xuXG52YXIgTUFYX0xFTkdUSCA9IDI1NjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgOTAwNzE5OTI1NDc0MDk5MTtcblxuLy8gTWF4IHNhZmUgc2VnbWVudCBsZW5ndGggZm9yIGNvZXJjaW9uLlxudmFyIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggPSAxNjtcblxuLy8gVGhlIGFjdHVhbCByZWdleHBzIGdvIG9uIGV4cG9ydHMucmVcbnZhciByZSA9IGV4cG9ydHMucmUgPSBbXTtcbnZhciBzcmMgPSBleHBvcnRzLnNyYyA9IFtdO1xudmFyIFIgPSAwO1xuXG4vLyBUaGUgZm9sbG93aW5nIFJlZ3VsYXIgRXhwcmVzc2lvbnMgY2FuIGJlIHVzZWQgZm9yIHRva2VuaXppbmcsXG4vLyB2YWxpZGF0aW5nLCBhbmQgcGFyc2luZyBTZW1WZXIgdmVyc2lvbiBzdHJpbmdzLlxuXG4vLyAjIyBOdW1lcmljIElkZW50aWZpZXJcbi8vIEEgc2luZ2xlIGAwYCwgb3IgYSBub24temVybyBkaWdpdCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgZGlnaXRzLlxuXG52YXIgTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJdID0gJzB8WzEtOV1cXFxcZConO1xudmFyIE5VTUVSSUNJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gPSAnWzAtOV0rJztcblxuXG4vLyAjIyBOb24tbnVtZXJpYyBJZGVudGlmaWVyXG4vLyBaZXJvIG9yIG1vcmUgZGlnaXRzLCBmb2xsb3dlZCBieSBhIGxldHRlciBvciBoeXBoZW4sIGFuZCB0aGVuIHplcm8gb3Jcbi8vIG1vcmUgbGV0dGVycywgZGlnaXRzLCBvciBoeXBoZW5zLlxuXG52YXIgTk9OTlVNRVJJQ0lERU5USUZJRVIgPSBSKys7XG5zcmNbTk9OTlVNRVJJQ0lERU5USUZJRVJdID0gJ1xcXFxkKlthLXpBLVotXVthLXpBLVowLTktXSonO1xuXG5cbi8vICMjIE1haW4gVmVyc2lvblxuLy8gVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuXG52YXIgTUFJTlZFUlNJT04gPSBSKys7XG5zcmNbTUFJTlZFUlNJT05dID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSXSArICcpXFxcXC4nICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICcoJyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBNQUlOVkVSU0lPTkxPT1NFID0gUisrO1xuc3JjW01BSU5WRVJTSU9OTE9PU0VdID0gJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJylcXFxcLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW05VTUVSSUNJREVOVElGSUVSTE9PU0VdICsgJyknO1xuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uIElkZW50aWZpZXJcbi8vIEEgbnVtZXJpYyBpZGVudGlmaWVyLCBvciBhIG5vbi1udW1lcmljIGlkZW50aWZpZXIuXG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUiA9IFIrKztcbnNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gPSAnKD86JyArIHNyY1tOVU1FUklDSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd8JyArIHNyY1tOT05OVU1FUklDSURFTlRJRklFUl0gKyAnKSc7XG5cbnZhciBQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdID0gJyg/OicgKyBzcmNbTlVNRVJJQ0lERU5USUZJRVJMT09TRV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgc3JjW05PTk5VTUVSSUNJREVOVElGSUVSXSArICcpJztcblxuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uXG4vLyBIeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvblxuLy8gaWRlbnRpZmllcnMuXG5cbnZhciBQUkVSRUxFQVNFID0gUisrO1xuc3JjW1BSRVJFTEVBU0VdID0gJyg/Oi0oJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUl0gKyAnKSopKSc7XG5cbnZhciBQUkVSRUxFQVNFTE9PU0UgPSBSKys7XG5zcmNbUFJFUkVMRUFTRUxPT1NFXSA9ICcoPzotPygnICsgc3JjW1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdICtcbiAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuJyArIHNyY1tQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXSArICcpKikpJztcblxuLy8gIyMgQnVpbGQgTWV0YWRhdGEgSWRlbnRpZmllclxuLy8gQW55IGNvbWJpbmF0aW9uIG9mIGRpZ2l0cywgbGV0dGVycywgb3IgaHlwaGVucy5cblxudmFyIEJVSUxESURFTlRJRklFUiA9IFIrKztcbnNyY1tCVUlMRElERU5USUZJRVJdID0gJ1swLTlBLVphLXotXSsnO1xuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YVxuLy8gUGx1cyBzaWduLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwZXJpb2Qtc2VwYXJhdGVkIGJ1aWxkIG1ldGFkYXRhXG4vLyBpZGVudGlmaWVycy5cblxudmFyIEJVSUxEID0gUisrO1xuc3JjW0JVSUxEXSA9ICcoPzpcXFxcKygnICsgc3JjW0JVSUxESURFTlRJRklFUl0gK1xuICAgICAgICAgICAgICcoPzpcXFxcLicgKyBzcmNbQlVJTERJREVOVElGSUVSXSArICcpKikpJztcblxuXG4vLyAjIyBGdWxsIFZlcnNpb24gU3RyaW5nXG4vLyBBIG1haW4gdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kXG4vLyBidWlsZCBtZXRhZGF0YS5cblxuLy8gTm90ZSB0aGF0IHRoZSBvbmx5IG1ham9yLCBtaW5vciwgcGF0Y2gsIGFuZCBwcmUtcmVsZWFzZSBzZWN0aW9ucyBvZlxuLy8gdGhlIHZlcnNpb24gc3RyaW5nIGFyZSBjYXB0dXJpbmcgZ3JvdXBzLiAgVGhlIGJ1aWxkIG1ldGFkYXRhIGlzIG5vdCBhXG4vLyBjYXB0dXJpbmcgZ3JvdXAsIGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBldmVyIGJlIHVzZWQgaW4gdmVyc2lvblxuLy8gY29tcGFyaXNvbi5cblxudmFyIEZVTEwgPSBSKys7XG52YXIgRlVMTFBMQUlOID0gJ3Y/JyArIHNyY1tNQUlOVkVSU0lPTl0gK1xuICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFXSArICc/JyArXG4gICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/Jztcblxuc3JjW0ZVTExdID0gJ14nICsgRlVMTFBMQUlOICsgJyQnO1xuXG4vLyBsaWtlIGZ1bGwsIGJ1dCBhbGxvd3MgdjEuMi4zIGFuZCA9MS4yLjMsIHdoaWNoIHBlb3BsZSBkbyBzb21ldGltZXMuXG4vLyBhbHNvLCAxLjAuMGFscGhhMSAocHJlcmVsZWFzZSB3aXRob3V0IHRoZSBoeXBoZW4pIHdoaWNoIGlzIHByZXR0eVxuLy8gY29tbW9uIGluIHRoZSBucG0gcmVnaXN0cnkuXG52YXIgTE9PU0VQTEFJTiA9ICdbdj1cXFxcc10qJyArIHNyY1tNQUlOVkVSU0lPTkxPT1NFXSArXG4gICAgICAgICAgICAgICAgIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgc3JjW0JVSUxEXSArICc/JztcblxudmFyIExPT1NFID0gUisrO1xuc3JjW0xPT1NFXSA9ICdeJyArIExPT1NFUExBSU4gKyAnJCc7XG5cbnZhciBHVExUID0gUisrO1xuc3JjW0dUTFRdID0gJygoPzo8fD4pPz0/KSc7XG5cbi8vIFNvbWV0aGluZyBsaWtlIFwiMi4qXCIgb3IgXCIxLjIueFwiLlxuLy8gTm90ZSB0aGF0IFwieC54XCIgaXMgYSB2YWxpZCB4UmFuZ2UgaWRlbnRpZmVyLCBtZWFuaW5nIFwiYW55IHZlcnNpb25cIlxuLy8gT25seSB0aGUgZmlyc3QgaXRlbSBpcyBzdHJpY3RseSByZXF1aXJlZC5cbnZhciBYUkFOR0VJREVOVElGSUVSTE9PU0UgPSBSKys7XG5zcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSA9IHNyY1tOVU1FUklDSURFTlRJRklFUkxPT1NFXSArICd8eHxYfFxcXFwqJztcbnZhciBYUkFOR0VJREVOVElGSUVSID0gUisrO1xuc3JjW1hSQU5HRUlERU5USUZJRVJdID0gc3JjW05VTUVSSUNJREVOVElGSUVSXSArICd8eHxYfFxcXFwqJztcblxudmFyIFhSQU5HRVBMQUlOID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOXSA9ICdbdj1cXFxcc10qKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUl0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnKD86XFxcXC4oJyArIHNyY1tYUkFOR0VJREVOVElGSUVSXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJyg/OicgKyBzcmNbUFJFUkVMRUFTRV0gKyAnKT8nICtcbiAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAnKT8pPyc7XG5cbnZhciBYUkFOR0VQTEFJTkxPT1NFID0gUisrO1xuc3JjW1hSQU5HRVBMQUlOTE9PU0VdID0gJ1t2PVxcXFxzXSooJyArIHNyY1tYUkFOR0VJREVOVElGSUVSTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcoPzpcXFxcLignICsgc3JjW1hSQU5HRUlERU5USUZJRVJMT09TRV0gKyAnKScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFwuKCcgKyBzcmNbWFJBTkdFSURFTlRJRklFUkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKD86JyArIHNyY1tQUkVSRUxFQVNFTE9PU0VdICsgJyk/JyArXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmNbQlVJTERdICsgJz8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcpPyk/JztcblxudmFyIFhSQU5HRSA9IFIrKztcbnNyY1tYUkFOR0VdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKicgKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFhSQU5HRUxPT1NFID0gUisrO1xuc3JjW1hSQU5HRUxPT1NFXSA9ICdeJyArIHNyY1tHVExUXSArICdcXFxccyonICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyQnO1xuXG4vLyBDb2VyY2lvbi5cbi8vIEV4dHJhY3QgYW55dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSBhIHBhcnQgb2YgYSB2YWxpZCBzZW12ZXJcbnZhciBDT0VSQ0UgPSBSKys7XG5zcmNbQ09FUkNFXSA9ICcoPzpefFteXFxcXGRdKScgK1xuICAgICAgICAgICAgICAnKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSknICtcbiAgICAgICAgICAgICAgJyg/OlxcXFwuKFxcXFxkezEsJyArIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEggKyAnfSkpPycgK1xuICAgICAgICAgICAgICAnKD86XFxcXC4oXFxcXGR7MSwnICsgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSCArICd9KSk/JyArXG4gICAgICAgICAgICAgICcoPzokfFteXFxcXGRdKSc7XG5cbi8vIFRpbGRlIHJhbmdlcy5cbi8vIE1lYW5pbmcgaXMgXCJyZWFzb25hYmx5IGF0IG9yIGdyZWF0ZXIgdGhhblwiXG52YXIgTE9ORVRJTERFID0gUisrO1xuc3JjW0xPTkVUSUxERV0gPSAnKD86fj4/KSc7XG5cbnZhciBUSUxERVRSSU0gPSBSKys7XG5zcmNbVElMREVUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbTE9ORVRJTERFXSArICdcXFxccysnO1xucmVbVElMREVUUklNXSA9IG5ldyBSZWdFeHAoc3JjW1RJTERFVFJJTV0sICdnJyk7XG52YXIgdGlsZGVUcmltUmVwbGFjZSA9ICckMX4nO1xuXG52YXIgVElMREUgPSBSKys7XG5zcmNbVElMREVdID0gJ14nICsgc3JjW0xPTkVUSUxERV0gKyBzcmNbWFJBTkdFUExBSU5dICsgJyQnO1xudmFyIFRJTERFTE9PU0UgPSBSKys7XG5zcmNbVElMREVMT09TRV0gPSAnXicgKyBzcmNbTE9ORVRJTERFXSArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICckJztcblxuLy8gQ2FyZXQgcmFuZ2VzLlxuLy8gTWVhbmluZyBpcyBcImF0IGxlYXN0IGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoXCJcbnZhciBMT05FQ0FSRVQgPSBSKys7XG5zcmNbTE9ORUNBUkVUXSA9ICcoPzpcXFxcXiknO1xuXG52YXIgQ0FSRVRUUklNID0gUisrO1xuc3JjW0NBUkVUVFJJTV0gPSAnKFxcXFxzKiknICsgc3JjW0xPTkVDQVJFVF0gKyAnXFxcXHMrJztcbnJlW0NBUkVUVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDQVJFVFRSSU1dLCAnZycpO1xudmFyIGNhcmV0VHJpbVJlcGxhY2UgPSAnJDFeJztcblxudmFyIENBUkVUID0gUisrO1xuc3JjW0NBUkVUXSA9ICdeJyArIHNyY1tMT05FQ0FSRVRdICsgc3JjW1hSQU5HRVBMQUlOXSArICckJztcbnZhciBDQVJFVExPT1NFID0gUisrO1xuc3JjW0NBUkVUTE9PU0VdID0gJ14nICsgc3JjW0xPTkVDQVJFVF0gKyBzcmNbWFJBTkdFUExBSU5MT09TRV0gKyAnJCc7XG5cbi8vIEEgc2ltcGxlIGd0L2x0L2VxIHRoaW5nLCBvciBqdXN0IFwiXCIgdG8gaW5kaWNhdGUgXCJhbnkgdmVyc2lvblwiXG52YXIgQ09NUEFSQVRPUkxPT1NFID0gUisrO1xuc3JjW0NPTVBBUkFUT1JMT09TRV0gPSAnXicgKyBzcmNbR1RMVF0gKyAnXFxcXHMqKCcgKyBMT09TRVBMQUlOICsgJykkfF4kJztcbnZhciBDT01QQVJBVE9SID0gUisrO1xuc3JjW0NPTVBBUkFUT1JdID0gJ14nICsgc3JjW0dUTFRdICsgJ1xcXFxzKignICsgRlVMTFBMQUlOICsgJykkfF4kJztcblxuXG4vLyBBbiBleHByZXNzaW9uIHRvIHN0cmlwIGFueSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIGd0bHQgYW5kIHRoZSB0aGluZ1xuLy8gaXQgbW9kaWZpZXMsIHNvIHRoYXQgYD4gMS4yLjNgID09PiBgPjEuMi4zYFxudmFyIENPTVBBUkFUT1JUUklNID0gUisrO1xuc3JjW0NPTVBBUkFUT1JUUklNXSA9ICcoXFxcXHMqKScgKyBzcmNbR1RMVF0gK1xuICAgICAgICAgICAgICAgICAgICAgICdcXFxccyooJyArIExPT1NFUExBSU4gKyAnfCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknO1xuXG4vLyB0aGlzIG9uZSBoYXMgdG8gdXNlIHRoZSAvZyBmbGFnXG5yZVtDT01QQVJBVE9SVFJJTV0gPSBuZXcgUmVnRXhwKHNyY1tDT01QQVJBVE9SVFJJTV0sICdnJyk7XG52YXIgY29tcGFyYXRvclRyaW1SZXBsYWNlID0gJyQxJDIkMyc7XG5cblxuLy8gU29tZXRoaW5nIGxpa2UgYDEuMi4zIC0gMS4yLjRgXG4vLyBOb3RlIHRoYXQgdGhlc2UgYWxsIHVzZSB0aGUgbG9vc2UgZm9ybSwgYmVjYXVzZSB0aGV5J2xsIGJlXG4vLyBjaGVja2VkIGFnYWluc3QgZWl0aGVyIHRoZSBzdHJpY3Qgb3IgbG9vc2UgY29tcGFyYXRvciBmb3JtXG4vLyBsYXRlci5cbnZhciBIWVBIRU5SQU5HRSA9IFIrKztcbnNyY1tIWVBIRU5SQU5HRV0gPSAnXlxcXFxzKignICsgc3JjW1hSQU5HRVBMQUlOXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJ1xcXFxzKy1cXFxccysnICtcbiAgICAgICAgICAgICAgICAgICAnKCcgKyBzcmNbWFJBTkdFUExBSU5dICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAnXFxcXHMqJCc7XG5cbnZhciBIWVBIRU5SQU5HRUxPT1NFID0gUisrO1xuc3JjW0hZUEhFTlJBTkdFTE9PU0VdID0gJ15cXFxccyooJyArIHNyY1tYUkFOR0VQTEFJTkxPT1NFXSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxcXHMrLVxcXFxzKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgc3JjW1hSQU5HRVBMQUlOTE9PU0VdICsgJyknICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXFxccyokJztcblxuLy8gU3RhciByYW5nZXMgYmFzaWNhbGx5IGp1c3QgYWxsb3cgYW55dGhpbmcgYXQgYWxsLlxudmFyIFNUQVIgPSBSKys7XG5zcmNbU1RBUl0gPSAnKDx8Pik/PT9cXFxccypcXFxcKic7XG5cbi8vIENvbXBpbGUgdG8gYWN0dWFsIHJlZ2V4cCBvYmplY3RzLlxuLy8gQWxsIGFyZSBmbGFnLWZyZWUsIHVubGVzcyB0aGV5IHdlcmUgY3JlYXRlZCBhYm92ZSB3aXRoIGEgZmxhZy5cbmZvciAodmFyIGkgPSAwOyBpIDwgUjsgaSsrKSB7XG4gIGRlYnVnKGksIHNyY1tpXSk7XG4gIGlmICghcmVbaV0pXG4gICAgcmVbaV0gPSBuZXcgUmVnRXhwKHNyY1tpXSk7XG59XG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmZ1bmN0aW9uIHBhcnNlKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKVxuICAgIHJldHVybiB2ZXJzaW9uO1xuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgaWYgKHZlcnNpb24ubGVuZ3RoID4gTUFYX0xFTkdUSClcbiAgICByZXR1cm4gbnVsbDtcblxuICB2YXIgciA9IGxvb3NlID8gcmVbTE9PU0VdIDogcmVbRlVMTF07XG4gIGlmICghci50ZXN0KHZlcnNpb24pKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydHMudmFsaWQgPSB2YWxpZDtcbmZ1bmN0aW9uIHZhbGlkKHZlcnNpb24sIGxvb3NlKSB7XG4gIHZhciB2ID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gdiA/IHYudmVyc2lvbiA6IG51bGw7XG59XG5cblxuZXhwb3J0cy5jbGVhbiA9IGNsZWFuO1xuZnVuY3Rpb24gY2xlYW4odmVyc2lvbiwgbG9vc2UpIHtcbiAgdmFyIHMgPSBwYXJzZSh2ZXJzaW9uLnRyaW0oKS5yZXBsYWNlKC9eWz12XSsvLCAnJyksIGxvb3NlKTtcbiAgcmV0dXJuIHMgPyBzLnZlcnNpb24gOiBudWxsO1xufVxuXG5leHBvcnRzLlNlbVZlciA9IFNlbVZlcjtcblxuZnVuY3Rpb24gU2VtVmVyKHZlcnNpb24sIGxvb3NlKSB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKSB7XG4gICAgaWYgKHZlcnNpb24ubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgZWxzZVxuICAgICAgdmVyc2lvbiA9IHZlcnNpb24udmVyc2lvbjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmVyc2lvbiBpcyBsb25nZXIgdGhhbiAnICsgTUFYX0xFTkdUSCArICcgY2hhcmFjdGVycycpXG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgcmV0dXJuIG5ldyBTZW1WZXIodmVyc2lvbiwgbG9vc2UpO1xuXG4gIGRlYnVnKCdTZW1WZXInLCB2ZXJzaW9uLCBsb29zZSk7XG4gIHRoaXMubG9vc2UgPSBsb29zZTtcbiAgdmFyIG0gPSB2ZXJzaW9uLnRyaW0oKS5tYXRjaChsb29zZSA/IHJlW0xPT1NFXSA6IHJlW0ZVTExdKTtcblxuICBpZiAoIW0pXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBWZXJzaW9uOiAnICsgdmVyc2lvbik7XG5cbiAgdGhpcy5yYXcgPSB2ZXJzaW9uO1xuXG4gIC8vIHRoZXNlIGFyZSBhY3R1YWxseSBudW1iZXJzXG4gIHRoaXMubWFqb3IgPSArbVsxXTtcbiAgdGhpcy5taW5vciA9ICttWzJdO1xuICB0aGlzLnBhdGNoID0gK21bM107XG5cbiAgaWYgKHRoaXMubWFqb3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWFqb3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWFqb3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMubWlub3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWlub3IgPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWlub3IgdmVyc2lvbicpXG5cbiAgaWYgKHRoaXMucGF0Y2ggPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMucGF0Y2ggPCAwKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgcGF0Y2ggdmVyc2lvbicpXG5cbiAgLy8gbnVtYmVyaWZ5IGFueSBwcmVyZWxlYXNlIG51bWVyaWMgaWRzXG4gIGlmICghbVs0XSlcbiAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgZWxzZVxuICAgIHRoaXMucHJlcmVsZWFzZSA9IG1bNF0uc3BsaXQoJy4nKS5tYXAoZnVuY3Rpb24oaWQpIHtcbiAgICAgIGlmICgvXlswLTldKyQvLnRlc3QoaWQpKSB7XG4gICAgICAgIHZhciBudW0gPSAraWQ7XG4gICAgICAgIGlmIChudW0gPj0gMCAmJiBudW0gPCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICAgIHJldHVybiBudW07XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG5cbiAgdGhpcy5idWlsZCA9IG1bNV0gPyBtWzVdLnNwbGl0KCcuJykgOiBbXTtcbiAgdGhpcy5mb3JtYXQoKTtcbn1cblxuU2VtVmVyLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy52ZXJzaW9uID0gdGhpcy5tYWpvciArICcuJyArIHRoaXMubWlub3IgKyAnLicgKyB0aGlzLnBhdGNoO1xuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICB0aGlzLnZlcnNpb24gKz0gJy0nICsgdGhpcy5wcmVyZWxlYXNlLmpvaW4oJy4nKTtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGRlYnVnKCdTZW1WZXIuY29tcGFyZScsIHRoaXMudmVyc2lvbiwgdGhpcy5sb29zZSwgb3RoZXIpO1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gdGhpcy5jb21wYXJlTWFpbihvdGhlcikgfHwgdGhpcy5jb21wYXJlUHJlKG90aGVyKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZU1haW4gPSBmdW5jdGlvbihvdGhlcikge1xuICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpXG4gICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWFqb3IsIG90aGVyLm1ham9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWlub3IsIG90aGVyLm1pbm9yKSB8fFxuICAgICAgICAgY29tcGFyZUlkZW50aWZpZXJzKHRoaXMucGF0Y2gsIG90aGVyLnBhdGNoKTtcbn07XG5cblNlbVZlci5wcm90b3R5cGUuY29tcGFyZVByZSA9IGZ1bmN0aW9uKG90aGVyKSB7XG4gIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSlcbiAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMubG9vc2UpO1xuXG4gIC8vIE5PVCBoYXZpbmcgYSBwcmVyZWxlYXNlIGlzID4gaGF2aW5nIG9uZVxuICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpXG4gICAgcmV0dXJuIC0xO1xuICBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiBvdGhlci5wcmVyZWxlYXNlLmxlbmd0aClcbiAgICByZXR1cm4gMTtcbiAgZWxzZSBpZiAoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGggJiYgIW90aGVyLnByZXJlbGVhc2UubGVuZ3RoKVxuICAgIHJldHVybiAwO1xuXG4gIHZhciBpID0gMDtcbiAgZG8ge1xuICAgIHZhciBhID0gdGhpcy5wcmVyZWxlYXNlW2ldO1xuICAgIHZhciBiID0gb3RoZXIucHJlcmVsZWFzZVtpXTtcbiAgICBkZWJ1ZygncHJlcmVsZWFzZSBjb21wYXJlJywgaSwgYSwgYik7XG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMDtcbiAgICBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChhID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gLTE7XG4gICAgZWxzZSBpZiAoYSA9PT0gYilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYik7XG4gIH0gd2hpbGUgKCsraSk7XG59O1xuXG4vLyBwcmVtaW5vciB3aWxsIGJ1bXAgdGhlIHZlcnNpb24gdXAgdG8gdGhlIG5leHQgbWlub3IgcmVsZWFzZSwgYW5kIGltbWVkaWF0ZWx5XG4vLyBkb3duIHRvIHByZS1yZWxlYXNlLiBwcmVtYWpvciBhbmQgcHJlcGF0Y2ggd29yayB0aGUgc2FtZSB3YXkuXG5TZW1WZXIucHJvdG90eXBlLmluYyA9IGZ1bmN0aW9uKHJlbGVhc2UsIGlkZW50aWZpZXIpIHtcbiAgc3dpdGNoIChyZWxlYXNlKSB7XG4gICAgY2FzZSAncHJlbWFqb3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IgPSAwO1xuICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncHJlbWlub3InOlxuICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ByZXBhdGNoJzpcbiAgICAgIC8vIElmIHRoaXMgaXMgYWxyZWFkeSBhIHByZXJlbGVhc2UsIGl0IHdpbGwgYnVtcCB0byB0aGUgbmV4dCB2ZXJzaW9uXG4gICAgICAvLyBkcm9wIGFueSBwcmVyZWxlYXNlcyB0aGF0IG1pZ2h0IGFscmVhZHkgZXhpc3QsIHNpbmNlIHRoZXkgYXJlIG5vdFxuICAgICAgLy8gcmVsZXZhbnQgYXQgdGhpcyBwb2ludC5cbiAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllcik7XG4gICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllcik7XG4gICAgICBicmVhaztcbiAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYSBub24tcHJlcmVsZWFzZSB2ZXJzaW9uLCB0aGlzIGFjdHMgdGhlIHNhbWUgYXNcbiAgICAvLyBwcmVwYXRjaC5cbiAgICBjYXNlICdwcmVyZWxlYXNlJzpcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLmluYygncGF0Y2gnLCBpZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuaW5jKCdwcmUnLCBpZGVudGlmaWVyKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWFqb3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1tYWpvciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1ham9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1ham9yLlxuICAgICAgLy8gMS4wLjAtNSBidW1wcyB0byAxLjAuMFxuICAgICAgLy8gMS4xLjAgYnVtcHMgdG8gMi4wLjBcbiAgICAgIGlmICh0aGlzLm1pbm9yICE9PSAwIHx8IHRoaXMucGF0Y2ggIT09IDAgfHwgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgdGhpcy5taW5vciA9IDA7XG4gICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWlub3InOlxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1taW5vciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1pbm9yIHZlcnNpb24uXG4gICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1pbm9yLlxuICAgICAgLy8gMS4yLjAtNSBidW1wcyB0byAxLjIuMFxuICAgICAgLy8gMS4yLjEgYnVtcHMgdG8gMS4zLjBcbiAgICAgIGlmICh0aGlzLnBhdGNoICE9PSAwIHx8IHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApXG4gICAgICAgIHRoaXMubWlub3IrKztcbiAgICAgIHRoaXMucGF0Y2ggPSAwO1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW107XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYXRjaCc6XG4gICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHByZS1yZWxlYXNlIHZlcnNpb24sIGl0IHdpbGwgaW5jcmVtZW50IHRoZSBwYXRjaC5cbiAgICAgIC8vIElmIGl0IGlzIGEgcHJlLXJlbGVhc2UgaXQgd2lsbCBidW1wIHVwIHRvIHRoZSBzYW1lIHBhdGNoIHZlcnNpb24uXG4gICAgICAvLyAxLjIuMC01IHBhdGNoZXMgdG8gMS4yLjBcbiAgICAgIC8vIDEuMi4wIHBhdGNoZXMgdG8gMS4yLjFcbiAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKVxuICAgICAgICB0aGlzLnBhdGNoKys7XG4gICAgICB0aGlzLnByZXJlbGVhc2UgPSBbXTtcbiAgICAgIGJyZWFrO1xuICAgIC8vIFRoaXMgcHJvYmFibHkgc2hvdWxkbid0IGJlIHVzZWQgcHVibGljbHkuXG4gICAgLy8gMS4wLjAgXCJwcmVcIiB3b3VsZCBiZWNvbWUgMS4wLjAtMCB3aGljaCBpcyB0aGUgd3JvbmcgZGlyZWN0aW9uLlxuICAgIGNhc2UgJ3ByZSc6XG4gICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5wcmVyZWxlYXNlLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXJlbGVhc2VbaV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2VbaV0rKztcbiAgICAgICAgICAgIGkgPSAtMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IC0xKSAvLyBkaWRuJ3QgaW5jcmVtZW50IGFueXRoaW5nXG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLnB1c2goMCk7XG4gICAgICB9XG4gICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAvLyAxLjIuMC1iZXRhLjEgYnVtcHMgdG8gMS4yLjAtYmV0YS4yLFxuICAgICAgICAvLyAxLjIuMC1iZXRhLmZvb2JseiBvciAxLjIuMC1iZXRhIGJ1bXBzIHRvIDEuMi4wLWJldGEuMFxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlWzBdID09PSBpZGVudGlmaWVyKSB7XG4gICAgICAgICAgaWYgKGlzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkpXG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbaWRlbnRpZmllciwgMF07XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtpZGVudGlmaWVyLCAwXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpbmNyZW1lbnQgYXJndW1lbnQ6ICcgKyByZWxlYXNlKTtcbiAgfVxuICB0aGlzLmZvcm1hdCgpO1xuICB0aGlzLnJhdyA9IHRoaXMudmVyc2lvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5leHBvcnRzLmluYyA9IGluYztcbmZ1bmN0aW9uIGluYyh2ZXJzaW9uLCByZWxlYXNlLCBsb29zZSwgaWRlbnRpZmllcikge1xuICBpZiAodHlwZW9mKGxvb3NlKSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZGVudGlmaWVyID0gbG9vc2U7XG4gICAgbG9vc2UgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKS5pbmMocmVsZWFzZSwgaWRlbnRpZmllcikudmVyc2lvbjtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnRzLmRpZmYgPSBkaWZmO1xuZnVuY3Rpb24gZGlmZih2ZXJzaW9uMSwgdmVyc2lvbjIpIHtcbiAgaWYgKGVxKHZlcnNpb24xLCB2ZXJzaW9uMikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdjEgPSBwYXJzZSh2ZXJzaW9uMSk7XG4gICAgdmFyIHYyID0gcGFyc2UodmVyc2lvbjIpO1xuICAgIGlmICh2MS5wcmVyZWxlYXNlLmxlbmd0aCB8fCB2Mi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdtYWpvcicgfHwga2V5ID09PSAnbWlub3InIHx8IGtleSA9PT0gJ3BhdGNoJykge1xuICAgICAgICAgIGlmICh2MVtrZXldICE9PSB2MltrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ByZScra2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICdwcmVyZWxlYXNlJztcbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIHYxKSB7XG4gICAgICBpZiAoa2V5ID09PSAnbWFqb3InIHx8IGtleSA9PT0gJ21pbm9yJyB8fCBrZXkgPT09ICdwYXRjaCcpIHtcbiAgICAgICAgaWYgKHYxW2tleV0gIT09IHYyW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydHMuY29tcGFyZUlkZW50aWZpZXJzID0gY29tcGFyZUlkZW50aWZpZXJzO1xuXG52YXIgbnVtZXJpYyA9IC9eWzAtOV0rJC87XG5mdW5jdGlvbiBjb21wYXJlSWRlbnRpZmllcnMoYSwgYikge1xuICB2YXIgYW51bSA9IG51bWVyaWMudGVzdChhKTtcbiAgdmFyIGJudW0gPSBudW1lcmljLnRlc3QoYik7XG5cbiAgaWYgKGFudW0gJiYgYm51bSkge1xuICAgIGEgPSArYTtcbiAgICBiID0gK2I7XG4gIH1cblxuICByZXR1cm4gKGFudW0gJiYgIWJudW0pID8gLTEgOlxuICAgICAgICAgKGJudW0gJiYgIWFudW0pID8gMSA6XG4gICAgICAgICBhIDwgYiA/IC0xIDpcbiAgICAgICAgIGEgPiBiID8gMSA6XG4gICAgICAgICAwO1xufVxuXG5leHBvcnRzLnJjb21wYXJlSWRlbnRpZmllcnMgPSByY29tcGFyZUlkZW50aWZpZXJzO1xuZnVuY3Rpb24gcmNvbXBhcmVJZGVudGlmaWVycyhhLCBiKSB7XG4gIHJldHVybiBjb21wYXJlSWRlbnRpZmllcnMoYiwgYSk7XG59XG5cbmV4cG9ydHMubWFqb3IgPSBtYWpvcjtcbmZ1bmN0aW9uIG1ham9yKGEsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5tYWpvcjtcbn1cblxuZXhwb3J0cy5taW5vciA9IG1pbm9yO1xuZnVuY3Rpb24gbWlub3IoYSwgbG9vc2UpIHtcbiAgcmV0dXJuIG5ldyBTZW1WZXIoYSwgbG9vc2UpLm1pbm9yO1xufVxuXG5leHBvcnRzLnBhdGNoID0gcGF0Y2g7XG5mdW5jdGlvbiBwYXRjaChhLCBsb29zZSkge1xuICByZXR1cm4gbmV3IFNlbVZlcihhLCBsb29zZSkucGF0Y2g7XG59XG5cbmV4cG9ydHMuY29tcGFyZSA9IGNvbXBhcmU7XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5jb21wYXJlKG5ldyBTZW1WZXIoYiwgbG9vc2UpKTtcbn1cblxuZXhwb3J0cy5jb21wYXJlTG9vc2UgPSBjb21wYXJlTG9vc2U7XG5mdW5jdGlvbiBjb21wYXJlTG9vc2UoYSwgYikge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCB0cnVlKTtcbn1cblxuZXhwb3J0cy5yY29tcGFyZSA9IHJjb21wYXJlO1xuZnVuY3Rpb24gcmNvbXBhcmUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYiwgYSwgbG9vc2UpO1xufVxuXG5leHBvcnRzLnNvcnQgPSBzb3J0O1xuZnVuY3Rpb24gc29ydChsaXN0LCBsb29zZSkge1xuICByZXR1cm4gbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5jb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMucnNvcnQgPSByc29ydDtcbmZ1bmN0aW9uIHJzb3J0KGxpc3QsIGxvb3NlKSB7XG4gIHJldHVybiBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBleHBvcnRzLnJjb21wYXJlKGEsIGIsIGxvb3NlKTtcbiAgfSk7XG59XG5cbmV4cG9ydHMuZ3QgPSBndDtcbmZ1bmN0aW9uIGd0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA+IDA7XG59XG5cbmV4cG9ydHMubHQgPSBsdDtcbmZ1bmN0aW9uIGx0KGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA8IDA7XG59XG5cbmV4cG9ydHMuZXEgPSBlcTtcbmZ1bmN0aW9uIGVxKGEsIGIsIGxvb3NlKSB7XG4gIHJldHVybiBjb21wYXJlKGEsIGIsIGxvb3NlKSA9PT0gMDtcbn1cblxuZXhwb3J0cy5uZXEgPSBuZXE7XG5mdW5jdGlvbiBuZXEoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpICE9PSAwO1xufVxuXG5leHBvcnRzLmd0ZSA9IGd0ZTtcbmZ1bmN0aW9uIGd0ZShhLCBiLCBsb29zZSkge1xuICByZXR1cm4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMDtcbn1cblxuZXhwb3J0cy5sdGUgPSBsdGU7XG5mdW5jdGlvbiBsdGUoYSwgYiwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgbG9vc2UpIDw9IDA7XG59XG5cbmV4cG9ydHMuY21wID0gY21wO1xuZnVuY3Rpb24gY21wKGEsIG9wLCBiLCBsb29zZSkge1xuICB2YXIgcmV0O1xuICBzd2l0Y2ggKG9wKSB7XG4gICAgY2FzZSAnPT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIGEgPSBhLnZlcnNpb247XG4gICAgICBpZiAodHlwZW9mIGIgPT09ICdvYmplY3QnKSBiID0gYi52ZXJzaW9uO1xuICAgICAgcmV0ID0gYSA9PT0gYjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJyE9PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKSBhID0gYS52ZXJzaW9uO1xuICAgICAgaWYgKHR5cGVvZiBiID09PSAnb2JqZWN0JykgYiA9IGIudmVyc2lvbjtcbiAgICAgIHJldCA9IGEgIT09IGI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICcnOiBjYXNlICc9JzogY2FzZSAnPT0nOiByZXQgPSBlcShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGNhc2UgJyE9JzogcmV0ID0gbmVxKGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPic6IHJldCA9IGd0KGEsIGIsIGxvb3NlKTsgYnJlYWs7XG4gICAgY2FzZSAnPj0nOiByZXQgPSBndGUoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8JzogcmV0ID0gbHQoYSwgYiwgbG9vc2UpOyBicmVhaztcbiAgICBjYXNlICc8PSc6IHJldCA9IGx0ZShhLCBiLCBsb29zZSk7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgb3BlcmF0b3I6ICcgKyBvcCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0cy5Db21wYXJhdG9yID0gQ29tcGFyYXRvcjtcbmZ1bmN0aW9uIENvbXBhcmF0b3IoY29tcCwgbG9vc2UpIHtcbiAgaWYgKGNvbXAgaW5zdGFuY2VvZiBDb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXAubG9vc2UgPT09IGxvb3NlKVxuICAgICAgcmV0dXJuIGNvbXA7XG4gICAgZWxzZVxuICAgICAgY29tcCA9IGNvbXAudmFsdWU7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpXG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcblxuICBkZWJ1ZygnY29tcGFyYXRvcicsIGNvbXAsIGxvb3NlKTtcbiAgdGhpcy5sb29zZSA9IGxvb3NlO1xuICB0aGlzLnBhcnNlKGNvbXApO1xuXG4gIGlmICh0aGlzLnNlbXZlciA9PT0gQU5ZKVxuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgZWxzZVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wZXJhdG9yICsgdGhpcy5zZW12ZXIudmVyc2lvbjtcblxuICBkZWJ1ZygnY29tcCcsIHRoaXMpO1xufVxuXG52YXIgQU5ZID0ge307XG5Db21wYXJhdG9yLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKGNvbXApIHtcbiAgdmFyIHIgPSB0aGlzLmxvb3NlID8gcmVbQ09NUEFSQVRPUkxPT1NFXSA6IHJlW0NPTVBBUkFUT1JdO1xuICB2YXIgbSA9IGNvbXAubWF0Y2gocik7XG5cbiAgaWYgKCFtKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY29tcGFyYXRvcjogJyArIGNvbXApO1xuXG4gIHRoaXMub3BlcmF0b3IgPSBtWzFdO1xuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJz0nKVxuICAgIHRoaXMub3BlcmF0b3IgPSAnJztcblxuICAvLyBpZiBpdCBsaXRlcmFsbHkgaXMganVzdCAnPicgb3IgJycgdGhlbiBhbGxvdyBhbnl0aGluZy5cbiAgaWYgKCFtWzJdKVxuICAgIHRoaXMuc2VtdmVyID0gQU5ZO1xuICBlbHNlXG4gICAgdGhpcy5zZW12ZXIgPSBuZXcgU2VtVmVyKG1bMl0sIHRoaXMubG9vc2UpO1xufTtcblxuQ29tcGFyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMudmFsdWU7XG59O1xuXG5Db21wYXJhdG9yLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24odmVyc2lvbikge1xuICBkZWJ1ZygnQ29tcGFyYXRvci50ZXN0JywgdmVyc2lvbiwgdGhpcy5sb29zZSk7XG5cbiAgaWYgKHRoaXMuc2VtdmVyID09PSBBTlkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnc3RyaW5nJylcbiAgICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCB0aGlzLmxvb3NlKTtcblxuICByZXR1cm4gY21wKHZlcnNpb24sIHRoaXMub3BlcmF0b3IsIHRoaXMuc2VtdmVyLCB0aGlzLmxvb3NlKTtcbn07XG5cbkNvbXBhcmF0b3IucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbihjb21wLCBsb29zZSkge1xuICBpZiAoIShjb21wIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhIENvbXBhcmF0b3IgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHZhciByYW5nZVRtcDtcblxuICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJycpIHtcbiAgICByYW5nZVRtcCA9IG5ldyBSYW5nZShjb21wLnZhbHVlLCBsb29zZSk7XG4gICAgcmV0dXJuIHNhdGlzZmllcyh0aGlzLnZhbHVlLCByYW5nZVRtcCwgbG9vc2UpO1xuICB9IGVsc2UgaWYgKGNvbXAub3BlcmF0b3IgPT09ICcnKSB7XG4gICAgcmFuZ2VUbXAgPSBuZXcgUmFuZ2UodGhpcy52YWx1ZSwgbG9vc2UpO1xuICAgIHJldHVybiBzYXRpc2ZpZXMoY29tcC5zZW12ZXIsIHJhbmdlVG1wLCBsb29zZSk7XG4gIH1cblxuICB2YXIgc2FtZURpcmVjdGlvbkluY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJz49JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPicpO1xuICB2YXIgc2FtZURpcmVjdGlvbkRlY3JlYXNpbmcgPVxuICAgICh0aGlzLm9wZXJhdG9yID09PSAnPD0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc8JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpO1xuICB2YXIgc2FtZVNlbVZlciA9IHRoaXMuc2VtdmVyLnZlcnNpb24gPT09IGNvbXAuc2VtdmVyLnZlcnNpb247XG4gIHZhciBkaWZmZXJlbnREaXJlY3Rpb25zSW5jbHVzaXZlID1cbiAgICAodGhpcy5vcGVyYXRvciA9PT0gJz49JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPD0nKSAmJlxuICAgIChjb21wLm9wZXJhdG9yID09PSAnPj0nIHx8IGNvbXAub3BlcmF0b3IgPT09ICc8PScpO1xuICB2YXIgb3Bwb3NpdGVEaXJlY3Rpb25zTGVzc1RoYW4gPVxuICAgIGNtcCh0aGlzLnNlbXZlciwgJzwnLCBjb21wLnNlbXZlciwgbG9vc2UpICYmXG4gICAgKCh0aGlzLm9wZXJhdG9yID09PSAnPj0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc+JykgJiZcbiAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpKTtcbiAgdmFyIG9wcG9zaXRlRGlyZWN0aW9uc0dyZWF0ZXJUaGFuID1cbiAgICBjbXAodGhpcy5zZW12ZXIsICc+JywgY29tcC5zZW12ZXIsIGxvb3NlKSAmJlxuICAgICgodGhpcy5vcGVyYXRvciA9PT0gJzw9JyB8fCB0aGlzLm9wZXJhdG9yID09PSAnPCcpICYmXG4gICAgKGNvbXAub3BlcmF0b3IgPT09ICc+PScgfHwgY29tcC5vcGVyYXRvciA9PT0gJz4nKSk7XG5cbiAgcmV0dXJuIHNhbWVEaXJlY3Rpb25JbmNyZWFzaW5nIHx8IHNhbWVEaXJlY3Rpb25EZWNyZWFzaW5nIHx8XG4gICAgKHNhbWVTZW1WZXIgJiYgZGlmZmVyZW50RGlyZWN0aW9uc0luY2x1c2l2ZSkgfHxcbiAgICBvcHBvc2l0ZURpcmVjdGlvbnNMZXNzVGhhbiB8fCBvcHBvc2l0ZURpcmVjdGlvbnNHcmVhdGVyVGhhbjtcbn07XG5cblxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuZnVuY3Rpb24gUmFuZ2UocmFuZ2UsIGxvb3NlKSB7XG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIFJhbmdlKSB7XG4gICAgaWYgKHJhbmdlLmxvb3NlID09PSBsb29zZSkge1xuICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnJhdywgbG9vc2UpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyYW5nZSBpbnN0YW5jZW9mIENvbXBhcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLnZhbHVlLCBsb29zZSk7XG4gIH1cblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmFuZ2UpKVxuICAgIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB0aGlzLmxvb3NlID0gbG9vc2U7XG5cbiAgLy8gRmlyc3QsIHNwbGl0IGJhc2VkIG9uIGJvb2xlYW4gb3IgfHxcbiAgdGhpcy5yYXcgPSByYW5nZTtcbiAgdGhpcy5zZXQgPSByYW5nZS5zcGxpdCgvXFxzKlxcfFxcfFxccyovKS5tYXAoZnVuY3Rpb24ocmFuZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVJhbmdlKHJhbmdlLnRyaW0oKSk7XG4gIH0sIHRoaXMpLmZpbHRlcihmdW5jdGlvbihjKSB7XG4gICAgLy8gdGhyb3cgb3V0IGFueSB0aGF0IGFyZSBub3QgcmVsZXZhbnQgZm9yIHdoYXRldmVyIHJlYXNvblxuICAgIHJldHVybiBjLmxlbmd0aDtcbiAgfSk7XG5cbiAgaWYgKCF0aGlzLnNldC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFNlbVZlciBSYW5nZTogJyArIHJhbmdlKTtcbiAgfVxuXG4gIHRoaXMuZm9ybWF0KCk7XG59XG5cblJhbmdlLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yYW5nZSA9IHRoaXMuc2V0Lm1hcChmdW5jdGlvbihjb21wcykge1xuICAgIHJldHVybiBjb21wcy5qb2luKCcgJykudHJpbSgpO1xuICB9KS5qb2luKCd8fCcpLnRyaW0oKTtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucmFuZ2U7XG59O1xuXG5SYW5nZS5wcm90b3R5cGUucGFyc2VSYW5nZSA9IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBsb29zZSA9IHRoaXMubG9vc2U7XG4gIHJhbmdlID0gcmFuZ2UudHJpbSgpO1xuICBkZWJ1ZygncmFuZ2UnLCByYW5nZSwgbG9vc2UpO1xuICAvLyBgMS4yLjMgLSAxLjIuNGAgPT4gYD49MS4yLjMgPD0xLjIuNGBcbiAgdmFyIGhyID0gbG9vc2UgPyByZVtIWVBIRU5SQU5HRUxPT1NFXSA6IHJlW0hZUEhFTlJBTkdFXTtcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKGhyLCBoeXBoZW5SZXBsYWNlKTtcbiAgZGVidWcoJ2h5cGhlbiByZXBsYWNlJywgcmFuZ2UpO1xuICAvLyBgPiAxLjIuMyA8IDEuMi41YCA9PiBgPjEuMi4zIDwxLjIuNWBcbiAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW0NPTVBBUkFUT1JUUklNXSwgY29tcGFyYXRvclRyaW1SZXBsYWNlKTtcbiAgZGVidWcoJ2NvbXBhcmF0b3IgdHJpbScsIHJhbmdlLCByZVtDT01QQVJBVE9SVFJJTV0pO1xuXG4gIC8vIGB+IDEuMi4zYCA9PiBgfjEuMi4zYFxuICByYW5nZSA9IHJhbmdlLnJlcGxhY2UocmVbVElMREVUUklNXSwgdGlsZGVUcmltUmVwbGFjZSk7XG5cbiAgLy8gYF4gMS4yLjNgID0+IGBeMS4yLjNgXG4gIHJhbmdlID0gcmFuZ2UucmVwbGFjZShyZVtDQVJFVFRSSU1dLCBjYXJldFRyaW1SZXBsYWNlKTtcblxuICAvLyBub3JtYWxpemUgc3BhY2VzXG4gIHJhbmdlID0gcmFuZ2Uuc3BsaXQoL1xccysvKS5qb2luKCcgJyk7XG5cbiAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIHJhbmdlIGlzIGNvbXBsZXRlbHkgdHJpbW1lZCBhbmRcbiAgLy8gcmVhZHkgdG8gYmUgc3BsaXQgaW50byBjb21wYXJhdG9ycy5cblxuICB2YXIgY29tcFJlID0gbG9vc2UgPyByZVtDT01QQVJBVE9STE9PU0VdIDogcmVbQ09NUEFSQVRPUl07XG4gIHZhciBzZXQgPSByYW5nZS5zcGxpdCgnICcpLm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIHBhcnNlQ29tcGFyYXRvcihjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKS5zcGxpdCgvXFxzKy8pO1xuICBpZiAodGhpcy5sb29zZSkge1xuICAgIC8vIGluIGxvb3NlIG1vZGUsIHRocm93IG91dCBhbnkgdGhhdCBhcmUgbm90IHZhbGlkIGNvbXBhcmF0b3JzXG4gICAgc2V0ID0gc2V0LmZpbHRlcihmdW5jdGlvbihjb21wKSB7XG4gICAgICByZXR1cm4gISFjb21wLm1hdGNoKGNvbXBSZSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbihjb21wKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wYXJhdG9yKGNvbXAsIGxvb3NlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNldDtcbn07XG5cblJhbmdlLnByb3RvdHlwZS5pbnRlcnNlY3RzID0gZnVuY3Rpb24ocmFuZ2UsIGxvb3NlKSB7XG4gIGlmICghKHJhbmdlIGluc3RhbmNlb2YgUmFuZ2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYSBSYW5nZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2V0LnNvbWUoZnVuY3Rpb24odGhpc0NvbXBhcmF0b3JzKSB7XG4gICAgcmV0dXJuIHRoaXNDb21wYXJhdG9ycy5ldmVyeShmdW5jdGlvbih0aGlzQ29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHJhbmdlLnNldC5zb21lKGZ1bmN0aW9uKHJhbmdlQ29tcGFyYXRvcnMpIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlQ29tcGFyYXRvcnMuZXZlcnkoZnVuY3Rpb24ocmFuZ2VDb21wYXJhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNDb21wYXJhdG9yLmludGVyc2VjdHMocmFuZ2VDb21wYXJhdG9yLCBsb29zZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gTW9zdGx5IGp1c3QgZm9yIHRlc3RpbmcgYW5kIGxlZ2FjeSBBUEkgcmVhc29uc1xuZXhwb3J0cy50b0NvbXBhcmF0b3JzID0gdG9Db21wYXJhdG9ycztcbmZ1bmN0aW9uIHRvQ29tcGFyYXRvcnMocmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKS5zZXQubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gY29tcC5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfSkuam9pbignICcpLnRyaW0oKS5zcGxpdCgnICcpO1xuICB9KTtcbn1cblxuLy8gY29tcHJpc2VkIG9mIHhyYW5nZXMsIHRpbGRlcywgc3RhcnMsIGFuZCBndGx0J3MgYXQgdGhpcyBwb2ludC5cbi8vIGFscmVhZHkgcmVwbGFjZWQgdGhlIGh5cGhlbiByYW5nZXNcbi8vIHR1cm4gaW50byBhIHNldCBvZiBKVVNUIGNvbXBhcmF0b3JzLlxuZnVuY3Rpb24gcGFyc2VDb21wYXJhdG9yKGNvbXAsIGxvb3NlKSB7XG4gIGRlYnVnKCdjb21wJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlQ2FyZXRzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlVGlsZGVzKGNvbXAsIGxvb3NlKTtcbiAgZGVidWcoJ3RpbGRlcycsIGNvbXApO1xuICBjb21wID0gcmVwbGFjZVhSYW5nZXMoY29tcCwgbG9vc2UpO1xuICBkZWJ1ZygneHJhbmdlJywgY29tcCk7XG4gIGNvbXAgPSByZXBsYWNlU3RhcnMoY29tcCwgbG9vc2UpO1xuICBkZWJ1Zygnc3RhcnMnLCBjb21wKTtcbiAgcmV0dXJuIGNvbXA7XG59XG5cbmZ1bmN0aW9uIGlzWChpZCkge1xuICByZXR1cm4gIWlkIHx8IGlkLnRvTG93ZXJDYXNlKCkgPT09ICd4JyB8fCBpZCA9PT0gJyonO1xufVxuXG4vLyB+LCB+PiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIH4yLCB+Mi54LCB+Mi54LngsIH4+Miwgfj4yLnggfj4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIH4yLjAsIH4yLjAueCwgfj4yLjAsIH4+Mi4wLnggLS0+ID49Mi4wLjAgPDIuMS4wXG4vLyB+MS4yLCB+MS4yLngsIH4+MS4yLCB+PjEuMi54IC0tPiA+PTEuMi4wIDwxLjMuMFxuLy8gfjEuMi4zLCB+PjEuMi4zIC0tPiA+PTEuMi4zIDwxLjMuMFxuLy8gfjEuMi4wLCB+PjEuMi4wIC0tPiA+PTEuMi4wIDwxLjMuMFxuZnVuY3Rpb24gcmVwbGFjZVRpbGRlcyhjb21wLCBsb29zZSkge1xuICByZXR1cm4gY29tcC50cmltKCkuc3BsaXQoL1xccysvKS5tYXAoZnVuY3Rpb24oY29tcCkge1xuICAgIHJldHVybiByZXBsYWNlVGlsZGUoY29tcCwgbG9vc2UpO1xuICB9KS5qb2luKCcgJyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VUaWxkZShjb21wLCBsb29zZSkge1xuICB2YXIgciA9IGxvb3NlID8gcmVbVElMREVMT09TRV0gOiByZVtUSUxERV07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygndGlsZGUnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKVxuICAgICAgLy8gfjEuMiA9PSA+PTEuMi4wIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICBlbHNlIGlmIChwcikge1xuICAgICAgZGVidWcoJ3JlcGxhY2VUaWxkZSBwcicsIHByKTtcbiAgICAgIGlmIChwci5jaGFyQXQoMCkgIT09ICctJylcbiAgICAgICAgcHIgPSAnLScgKyBwcjtcbiAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9IGVsc2VcbiAgICAgIC8vIH4xLjIuMyA9PSA+PTEuMi4zIDwxLjMuMFxuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcblxuICAgIGRlYnVnKCd0aWxkZSByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG4vLyBeIC0tPiAqIChhbnksIGtpbmRhIHNpbGx5KVxuLy8gXjIsIF4yLngsIF4yLngueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4yLjAsIF4yLjAueCAtLT4gPj0yLjAuMCA8My4wLjBcbi8vIF4xLjIsIF4xLjIueCAtLT4gPj0xLjIuMCA8Mi4wLjBcbi8vIF4xLjIuMyAtLT4gPj0xLjIuMyA8Mi4wLjBcbi8vIF4xLjIuMCAtLT4gPj0xLjIuMCA8Mi4wLjBcbmZ1bmN0aW9uIHJlcGxhY2VDYXJldHMoY29tcCwgbG9vc2UpIHtcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZUNhcmV0KGNvbXAsIGxvb3NlKTtcbiAgfSkuam9pbignICcpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ2FyZXQoY29tcCwgbG9vc2UpIHtcbiAgZGVidWcoJ2NhcmV0JywgY29tcCwgbG9vc2UpO1xuICB2YXIgciA9IGxvb3NlID8gcmVbQ0FSRVRMT09TRV0gOiByZVtDQVJFVF07XG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgZnVuY3Rpb24oXywgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygnY2FyZXQnLCBjb21wLCBfLCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHJldDtcblxuICAgIGlmIChpc1goTSkpXG4gICAgICByZXQgPSAnJztcbiAgICBlbHNlIGlmIChpc1gobSkpXG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgZWxzZSBpZiAoaXNYKHApKSB7XG4gICAgICBpZiAoTSA9PT0gJzAnKVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLjAgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2UgaWYgKHByKSB7XG4gICAgICBkZWJ1ZygncmVwbGFjZUNhcmV0IHByJywgcHIpO1xuICAgICAgaWYgKHByLmNoYXJBdCgwKSAhPT0gJy0nKVxuICAgICAgICBwciA9ICctJyArIHByO1xuICAgICAgaWYgKE0gPT09ICcwJykge1xuICAgICAgICBpZiAobSA9PT0gJzAnKVxuICAgICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICsgcHIgK1xuICAgICAgICAgICAgICAgICcgPCcgKyBNICsgJy4nICsgKCttICsgMSkgKyAnLjAnO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldCA9ICc+PScgKyBNICsgJy4nICsgbSArICcuJyArIHAgKyBwciArXG4gICAgICAgICAgICAgICcgPCcgKyAoK00gKyAxKSArICcuMC4wJztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ25vIHByJyk7XG4gICAgICBpZiAoTSA9PT0gJzAnKSB7XG4gICAgICAgIGlmIChtID09PSAnMCcpXG4gICAgICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4nICsgcCArXG4gICAgICAgICAgICAgICAgJyA8JyArIE0gKyAnLicgKyBtICsgJy4nICsgKCtwICsgMSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgICAnIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXQgPSAnPj0nICsgTSArICcuJyArIG0gKyAnLicgKyBwICtcbiAgICAgICAgICAgICAgJyA8JyArICgrTSArIDEpICsgJy4wLjAnO1xuICAgIH1cblxuICAgIGRlYnVnKCdjYXJldCByZXR1cm4nLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlWFJhbmdlcyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVhSYW5nZXMnLCBjb21wLCBsb29zZSk7XG4gIHJldHVybiBjb21wLnNwbGl0KC9cXHMrLykubWFwKGZ1bmN0aW9uKGNvbXApIHtcbiAgICByZXR1cm4gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSk7XG4gIH0pLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVhSYW5nZShjb21wLCBsb29zZSkge1xuICBjb21wID0gY29tcC50cmltKCk7XG4gIHZhciByID0gbG9vc2UgPyByZVtYUkFOR0VMT09TRV0gOiByZVtYUkFOR0VdO1xuICByZXR1cm4gY29tcC5yZXBsYWNlKHIsIGZ1bmN0aW9uKHJldCwgZ3RsdCwgTSwgbSwgcCwgcHIpIHtcbiAgICBkZWJ1ZygneFJhbmdlJywgY29tcCwgcmV0LCBndGx0LCBNLCBtLCBwLCBwcik7XG4gICAgdmFyIHhNID0gaXNYKE0pO1xuICAgIHZhciB4bSA9IHhNIHx8IGlzWChtKTtcbiAgICB2YXIgeHAgPSB4bSB8fCBpc1gocCk7XG4gICAgdmFyIGFueVggPSB4cDtcblxuICAgIGlmIChndGx0ID09PSAnPScgJiYgYW55WClcbiAgICAgIGd0bHQgPSAnJztcblxuICAgIGlmICh4TSkge1xuICAgICAgaWYgKGd0bHQgPT09ICc+JyB8fCBndGx0ID09PSAnPCcpIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBhbGxvd2VkXG4gICAgICAgIHJldCA9ICc8MC4wLjAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBmb3JiaWRkZW5cbiAgICAgICAgcmV0ID0gJyonO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3RsdCAmJiBhbnlYKSB7XG4gICAgICAvLyByZXBsYWNlIFggd2l0aCAwXG4gICAgICBpZiAoeG0pXG4gICAgICAgIG0gPSAwO1xuICAgICAgaWYgKHhwKVxuICAgICAgICBwID0gMDtcblxuICAgICAgaWYgKGd0bHQgPT09ICc+Jykge1xuICAgICAgICAvLyA+MSA9PiA+PTIuMC4wXG4gICAgICAgIC8vID4xLjIgPT4gPj0xLjMuMFxuICAgICAgICAvLyA+MS4yLjMgPT4gPj0gMS4yLjRcbiAgICAgICAgZ3RsdCA9ICc+PSc7XG4gICAgICAgIGlmICh4bSkge1xuICAgICAgICAgIE0gPSArTSArIDE7XG4gICAgICAgICAgbSA9IDA7XG4gICAgICAgICAgcCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoeHApIHtcbiAgICAgICAgICBtID0gK20gKyAxO1xuICAgICAgICAgIHAgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGd0bHQgPT09ICc8PScpIHtcbiAgICAgICAgLy8gPD0wLjcueCBpcyBhY3R1YWxseSA8MC44LjAsIHNpbmNlIGFueSAwLjcueCBzaG91bGRcbiAgICAgICAgLy8gcGFzcy4gIFNpbWlsYXJseSwgPD03LnggaXMgYWN0dWFsbHkgPDguMC4wLCBldGMuXG4gICAgICAgIGd0bHQgPSAnPCc7XG4gICAgICAgIGlmICh4bSlcbiAgICAgICAgICBNID0gK00gKyAxO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbSA9ICttICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0ID0gZ3RsdCArIE0gKyAnLicgKyBtICsgJy4nICsgcDtcbiAgICB9IGVsc2UgaWYgKHhtKSB7XG4gICAgICByZXQgPSAnPj0nICsgTSArICcuMC4wIDwnICsgKCtNICsgMSkgKyAnLjAuMCc7XG4gICAgfSBlbHNlIGlmICh4cCkge1xuICAgICAgcmV0ID0gJz49JyArIE0gKyAnLicgKyBtICsgJy4wIDwnICsgTSArICcuJyArICgrbSArIDEpICsgJy4wJztcbiAgICB9XG5cbiAgICBkZWJ1ZygneFJhbmdlIHJldHVybicsIHJldCk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cblxuLy8gQmVjYXVzZSAqIGlzIEFORC1lZCB3aXRoIGV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgY29tcGFyYXRvcixcbi8vIGFuZCAnJyBtZWFucyBcImFueSB2ZXJzaW9uXCIsIGp1c3QgcmVtb3ZlIHRoZSAqcyBlbnRpcmVseS5cbmZ1bmN0aW9uIHJlcGxhY2VTdGFycyhjb21wLCBsb29zZSkge1xuICBkZWJ1ZygncmVwbGFjZVN0YXJzJywgY29tcCwgbG9vc2UpO1xuICAvLyBMb29zZW5lc3MgaXMgaWdub3JlZCBoZXJlLiAgc3RhciBpcyBhbHdheXMgYXMgbG9vc2UgYXMgaXQgZ2V0cyFcbiAgcmV0dXJuIGNvbXAudHJpbSgpLnJlcGxhY2UocmVbU1RBUl0sICcnKTtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gc3RyaW5nLnJlcGxhY2UocmVbSFlQSEVOUkFOR0VdKVxuLy8gTSwgbSwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkXG4vLyAxLjIgLSAzLjQuNSA9PiA+PTEuMi4wIDw9My40LjVcbi8vIDEuMi4zIC0gMy40ID0+ID49MS4yLjAgPDMuNS4wIEFueSAzLjQueCB3aWxsIGRvXG4vLyAxLjIgLSAzLjQgPT4gPj0xLjIuMCA8My41LjBcbmZ1bmN0aW9uIGh5cGhlblJlcGxhY2UoJDAsXG4gICAgICAgICAgICAgICAgICAgICAgIGZyb20sIGZNLCBmbSwgZnAsIGZwciwgZmIsXG4gICAgICAgICAgICAgICAgICAgICAgIHRvLCB0TSwgdG0sIHRwLCB0cHIsIHRiKSB7XG5cbiAgaWYgKGlzWChmTSkpXG4gICAgZnJvbSA9ICcnO1xuICBlbHNlIGlmIChpc1goZm0pKVxuICAgIGZyb20gPSAnPj0nICsgZk0gKyAnLjAuMCc7XG4gIGVsc2UgaWYgKGlzWChmcCkpXG4gICAgZnJvbSA9ICc+PScgKyBmTSArICcuJyArIGZtICsgJy4wJztcbiAgZWxzZVxuICAgIGZyb20gPSAnPj0nICsgZnJvbTtcblxuICBpZiAoaXNYKHRNKSlcbiAgICB0byA9ICcnO1xuICBlbHNlIGlmIChpc1godG0pKVxuICAgIHRvID0gJzwnICsgKCt0TSArIDEpICsgJy4wLjAnO1xuICBlbHNlIGlmIChpc1godHApKVxuICAgIHRvID0gJzwnICsgdE0gKyAnLicgKyAoK3RtICsgMSkgKyAnLjAnO1xuICBlbHNlIGlmICh0cHIpXG4gICAgdG8gPSAnPD0nICsgdE0gKyAnLicgKyB0bSArICcuJyArIHRwICsgJy0nICsgdHByO1xuICBlbHNlXG4gICAgdG8gPSAnPD0nICsgdG87XG5cbiAgcmV0dXJuIChmcm9tICsgJyAnICsgdG8pLnRyaW0oKTtcbn1cblxuXG4vLyBpZiBBTlkgb2YgdGhlIHNldHMgbWF0Y2ggQUxMIG9mIGl0cyBjb21wYXJhdG9ycywgdGhlbiBwYXNzXG5SYW5nZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKHZlcnNpb24pIHtcbiAgaWYgKCF2ZXJzaW9uKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKVxuICAgIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIHRoaXMubG9vc2UpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGVzdFNldCh0aGlzLnNldFtpXSwgdmVyc2lvbikpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiB0ZXN0U2V0KHNldCwgdmVyc2lvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKykge1xuICAgIGlmICghc2V0W2ldLnRlc3QodmVyc2lvbikpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgIC8vIEZpbmQgdGhlIHNldCBvZiB2ZXJzaW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyhzZXRbaV0uc2VtdmVyKTtcbiAgICAgIGlmIChzZXRbaV0uc2VtdmVyID09PSBBTlkpXG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBpZiAoc2V0W2ldLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGFsbG93ZWQgPSBzZXRbaV0uc2VtdmVyO1xuICAgICAgICBpZiAoYWxsb3dlZC5tYWpvciA9PT0gdmVyc2lvbi5tYWpvciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5taW5vciA9PT0gdmVyc2lvbi5taW5vciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5wYXRjaCA9PT0gdmVyc2lvbi5wYXRjaClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWZXJzaW9uIGhhcyBhIC1wcmUsIGJ1dCBpdCdzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2UgbGlrZS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0cy5zYXRpc2ZpZXMgPSBzYXRpc2ZpZXM7XG5mdW5jdGlvbiBzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHRyeSB7XG4gICAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbik7XG59XG5cbmV4cG9ydHMubWF4U2F0aXNmeWluZyA9IG1heFNhdGlzZnlpbmc7XG5mdW5jdGlvbiBtYXhTYXRpc2Z5aW5nKHZlcnNpb25zLCByYW5nZSwgbG9vc2UpIHtcbiAgdmFyIG1heCA9IG51bGw7XG4gIHZhciBtYXhTViA9IG51bGw7XG4gIHRyeSB7XG4gICAgdmFyIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSk7XG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7IC8vIHNhdGlzZmllcyh2LCByYW5nZSwgbG9vc2UpXG4gICAgICBpZiAoIW1heCB8fCBtYXhTVi5jb21wYXJlKHYpID09PSAtMSkgeyAvLyBjb21wYXJlKG1heCwgdiwgdHJ1ZSlcbiAgICAgICAgbWF4ID0gdjtcbiAgICAgICAgbWF4U1YgPSBuZXcgU2VtVmVyKG1heCwgbG9vc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG1heDtcbn1cblxuZXhwb3J0cy5taW5TYXRpc2Z5aW5nID0gbWluU2F0aXNmeWluZztcbmZ1bmN0aW9uIG1pblNhdGlzZnlpbmcodmVyc2lvbnMsIHJhbmdlLCBsb29zZSkge1xuICB2YXIgbWluID0gbnVsbDtcbiAgdmFyIG1pblNWID0gbnVsbDtcbiAgdHJ5IHtcbiAgICB2YXIgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHsgLy8gc2F0aXNmaWVzKHYsIHJhbmdlLCBsb29zZSlcbiAgICAgIGlmICghbWluIHx8IG1pblNWLmNvbXBhcmUodikgPT09IDEpIHsgLy8gY29tcGFyZShtaW4sIHYsIHRydWUpXG4gICAgICAgIG1pbiA9IHY7XG4gICAgICAgIG1pblNWID0gbmV3IFNlbVZlcihtaW4sIGxvb3NlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBtaW47XG59XG5cbmV4cG9ydHMudmFsaWRSYW5nZSA9IHZhbGlkUmFuZ2U7XG5mdW5jdGlvbiB2YWxpZFJhbmdlKHJhbmdlLCBsb29zZSkge1xuICB0cnkge1xuICAgIC8vIFJldHVybiAnKicgaW5zdGVhZCBvZiAnJyBzbyB0aGF0IHRydXRoaW5lc3Mgd29ya3MuXG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIGl0J3MgaW52YWxpZCBhbnl3YXlcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSkucmFuZ2UgfHwgJyonO1xuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZVxuZXhwb3J0cy5sdHIgPSBsdHI7XG5mdW5jdGlvbiBsdHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPCcsIGxvb3NlKTtcbn1cblxuLy8gRGV0ZXJtaW5lIGlmIHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGUgdmVyc2lvbnMgcG9zc2libGUgaW4gdGhlIHJhbmdlLlxuZXhwb3J0cy5ndHIgPSBndHI7XG5mdW5jdGlvbiBndHIodmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSB7XG4gIHJldHVybiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPicsIGxvb3NlKTtcbn1cblxuZXhwb3J0cy5vdXRzaWRlID0gb3V0c2lkZTtcbmZ1bmN0aW9uIG91dHNpZGUodmVyc2lvbiwgcmFuZ2UsIGhpbG8sIGxvb3NlKSB7XG4gIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIGxvb3NlKTtcbiAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIGxvb3NlKTtcblxuICB2YXIgZ3RmbiwgbHRlZm4sIGx0Zm4sIGNvbXAsIGVjb21wO1xuICBzd2l0Y2ggKGhpbG8pIHtcbiAgICBjYXNlICc+JzpcbiAgICAgIGd0Zm4gPSBndDtcbiAgICAgIGx0ZWZuID0gbHRlO1xuICAgICAgbHRmbiA9IGx0O1xuICAgICAgY29tcCA9ICc+JztcbiAgICAgIGVjb21wID0gJz49JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzwnOlxuICAgICAgZ3RmbiA9IGx0O1xuICAgICAgbHRlZm4gPSBndGU7XG4gICAgICBsdGZuID0gZ3Q7XG4gICAgICBjb21wID0gJzwnO1xuICAgICAgZWNvbXAgPSAnPD0nO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ011c3QgcHJvdmlkZSBhIGhpbG8gdmFsIG9mIFwiPFwiIG9yIFwiPlwiJyk7XG4gIH1cblxuICAvLyBJZiBpdCBzYXRpc2lmZXMgdGhlIHJhbmdlIGl0IGlzIG5vdCBvdXRzaWRlXG4gIGlmIChzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIGxvb3NlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZyb20gbm93IG9uLCB2YXJpYWJsZSB0ZXJtcyBhcmUgYXMgaWYgd2UncmUgaW4gXCJndHJcIiBtb2RlLlxuICAvLyBidXQgbm90ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmxpcHBlZCBmb3IgdGhlIFwibHRyXCIgZnVuY3Rpb24uXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZS5zZXQubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV07XG5cbiAgICB2YXIgaGlnaCA9IG51bGw7XG4gICAgdmFyIGxvdyA9IG51bGw7XG5cbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGNvbXBhcmF0b3IpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yLnNlbXZlciA9PT0gQU5ZKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSBuZXcgQ29tcGFyYXRvcignPj0wLjAuMCcpXG4gICAgICB9XG4gICAgICBoaWdoID0gaGlnaCB8fCBjb21wYXJhdG9yO1xuICAgICAgbG93ID0gbG93IHx8IGNvbXBhcmF0b3I7XG4gICAgICBpZiAoZ3Rmbihjb21wYXJhdG9yLnNlbXZlciwgaGlnaC5zZW12ZXIsIGxvb3NlKSkge1xuICAgICAgICBoaWdoID0gY29tcGFyYXRvcjtcbiAgICAgIH0gZWxzZSBpZiAobHRmbihjb21wYXJhdG9yLnNlbXZlciwgbG93LnNlbXZlciwgbG9vc2UpKSB7XG4gICAgICAgIGxvdyA9IGNvbXBhcmF0b3I7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGUgZWRnZSB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGEgb3BlcmF0b3IgdGhlbiBvdXIgdmVyc2lvblxuICAgIC8vIGlzbid0IG91dHNpZGUgaXRcbiAgICBpZiAoaGlnaC5vcGVyYXRvciA9PT0gY29tcCB8fCBoaWdoLm9wZXJhdG9yID09PSBlY29tcCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBsb3dlc3QgdmVyc2lvbiBjb21wYXJhdG9yIGhhcyBhbiBvcGVyYXRvciBhbmQgb3VyIHZlcnNpb25cbiAgICAvLyBpcyBsZXNzIHRoYW4gaXQgdGhlbiBpdCBpc24ndCBoaWdoZXIgdGhhbiB0aGUgcmFuZ2VcbiAgICBpZiAoKCFsb3cub3BlcmF0b3IgfHwgbG93Lm9wZXJhdG9yID09PSBjb21wKSAmJlxuICAgICAgICBsdGVmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobG93Lm9wZXJhdG9yID09PSBlY29tcCAmJiBsdGZuKHZlcnNpb24sIGxvdy5zZW12ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnRzLnByZXJlbGVhc2UgPSBwcmVyZWxlYXNlO1xuZnVuY3Rpb24gcHJlcmVsZWFzZSh2ZXJzaW9uLCBsb29zZSkge1xuICB2YXIgcGFyc2VkID0gcGFyc2UodmVyc2lvbiwgbG9vc2UpO1xuICByZXR1cm4gKHBhcnNlZCAmJiBwYXJzZWQucHJlcmVsZWFzZS5sZW5ndGgpID8gcGFyc2VkLnByZXJlbGVhc2UgOiBudWxsO1xufVxuXG5leHBvcnRzLmludGVyc2VjdHMgPSBpbnRlcnNlY3RzO1xuZnVuY3Rpb24gaW50ZXJzZWN0cyhyMSwgcjIsIGxvb3NlKSB7XG4gIHIxID0gbmV3IFJhbmdlKHIxLCBsb29zZSlcbiAgcjIgPSBuZXcgUmFuZ2UocjIsIGxvb3NlKVxuICByZXR1cm4gcjEuaW50ZXJzZWN0cyhyMilcbn1cblxuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5mdW5jdGlvbiBjb2VyY2UodmVyc2lvbikge1xuICBpZiAodmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlcilcbiAgICByZXR1cm4gdmVyc2lvbjtcblxuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKVxuICAgIHJldHVybiBudWxsO1xuXG4gIHZhciBtYXRjaCA9IHZlcnNpb24ubWF0Y2gocmVbQ09FUkNFXSk7XG5cbiAgaWYgKG1hdGNoID09IG51bGwpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHBhcnNlKChtYXRjaFsxXSB8fCAnMCcpICsgJy4nICsgKG1hdGNoWzJdIHx8ICcwJykgKyAnLicgKyAobWF0Y2hbM10gfHwgJzAnKSk7IFxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=","compiledPath":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/process/browser.js","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/process/browser.js","sourceMapSources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///node_modules/semver/semver.js","webpack:///node_modules/process/browser.js"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101075,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/stream_base_commons.js"},"level":0} {"tag":"dap.send","timestamp":1588425101077,"metadata":{"connectionId":1,"message":{"seq":310,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/webpack/universalModuleDefinition","path":"/Users/roblou/code/vscode/webpack/universalModuleDefinition","sourceReference":1709914809}}}},"level":0} {"tag":"dap.send","timestamp":1588425101077,"metadata":{"connectionId":1,"message":{"seq":311,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/semver/semver.js","path":"/Users/roblou/code/vscode/node_modules/semver/semver.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101077,"metadata":{"connectionId":1,"message":{"seq":312,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/process/browser.js","path":"/Users/roblou/code/vscode/node_modules/process/browser.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101078,"metadata":{"connectionId":1,"message":{"seq":313,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js","path":"/Users/roblou/code/vscode/node_modules/semver-umd/lib/semver-umd.js","sourceReference":651777912}}}},"level":0} {"tag":"dap.send","timestamp":1588425101078,"metadata":{"connectionId":1,"message":{"seq":314,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/stream_base_commons.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/stream_base_commons.js","sourceReference":1698993504}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101080,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101080,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/electron-browser/taskService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/electron-browser/taskService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/electron-browser/taskService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/electron-browser/taskService.ts","sourceMapSources":["vs/workbench/contrib/tasks/electron-browser/taskService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101080,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/child_process.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101080,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/dtrace.js"},"level":0} {"tag":"dap.send","timestamp":1588425101081,"metadata":{"connectionId":1,"message":{"seq":315,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/electron-browser/taskService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/electron-browser/taskService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101082,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/child_process.js"},"level":0} {"tag":"dap.send","timestamp":1588425101082,"metadata":{"connectionId":1,"message":{"seq":316,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/child_process.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/child_process.js","sourceReference":1122378391}}}},"level":0} {"tag":"dap.send","timestamp":1588425101082,"metadata":{"connectionId":1,"message":{"seq":317,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/dtrace.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/dtrace.js","sourceReference":1926117802}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101083,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/dgram.js"},"level":0} {"tag":"dap.send","timestamp":1588425101084,"metadata":{"connectionId":1,"message":{"seq":318,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/child_process.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/child_process.js","sourceReference":1731035638}}}},"level":0} {"tag":"dap.send","timestamp":1588425101084,"metadata":{"connectionId":1,"message":{"seq":319,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/dgram.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/dgram.js","sourceReference":1020296186}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101088,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/dgram.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101088,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/socket_list.js"},"level":0} {"tag":"dap.send","timestamp":1588425101088,"metadata":{"connectionId":1,"message":{"seq":320,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/dgram.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/dgram.js","sourceReference":486413775}}}},"level":0} {"tag":"dap.send","timestamp":1588425101089,"metadata":{"connectionId":1,"message":{"seq":321,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/socket_list.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/socket_list.js","sourceReference":1738168173}}}},"level":0} {"tag":"dap.send","timestamp":1588425101259,"metadata":{"connectionId":0,"message":{"seq":15,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"initialize":{"operation":"initialize","totalTime":0.9,"max":0.9,"avg":0.9,"stddev":null,"count":1,"failed":0},"initialize.errors":[],"setExceptionBreakpoints":{"operation":"setExceptionBreakpoints","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"setExceptionBreakpoints.errors":[],"configurationDone":{"operation":"configurationDone","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"configurationDone.errors":[],"threads":{"operation":"threads","totalTime":0.5,"max":0.5,"avg":0.5,"stddev":null,"count":1,"failed":0},"threads.errors":[],"launch":{"operation":"launch","totalTime":3841.7,"max":3841.7,"avg":3841.7,"stddev":null,"count":1,"failed":0},"launch.errors":[],"loadedSources":{"operation":"loadedSources","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"loadedSources.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101275,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"191","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js","startLine":0,"startColumn":0,"endLine":61,"endColumn":3,"executionContextId":1,"hash":"3444ae5c7dfcb237495f4c19c82a611d3cef8082","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"instantiation.js.map","hasSourceURL":false,"isModule":false,"length":2655,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101276,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","startLine":0,"startColumn":0,"endLine":706,"endColumn":3,"executionContextId":1,"hash":"3da32a8c75a87b7233d4244fb4cf8d7141060810","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"async.js.map","hasSourceURL":false,"isModule":false,"length":24780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101276,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"193","url":"file:///Users/roblou/code/vscode/out/vs/platform/label/common/label.js","startLine":0,"startColumn":0,"endLine":27,"endColumn":3,"executionContextId":1,"hash":"38d7dc181f34aa347814fcd2b3e3e50804479f3a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"label.js.map","hasSourceURL":false,"isModule":false,"length":1759,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101276,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"194","url":"file:///Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js","startLine":0,"startColumn":0,"endLine":138,"endColumn":3,"executionContextId":1,"hash":"27afeebb66912c2372b6dd1b9acfa6540e041dc4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storage.js.map","hasSourceURL":false,"isModule":false,"length":6011,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101276,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"195","url":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js","startLine":0,"startColumn":0,"endLine":252,"endColumn":3,"executionContextId":1,"hash":"3444e89463852c4f057818542880122f432ae5d9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configuration.js.map","hasSourceURL":false,"isModule":false,"length":12247,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101276,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"196","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/browser.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":3,"executionContextId":1,"hash":"23310841a5ba69422ddaf77b038bdf094829384b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"browser.js.map","hasSourceURL":false,"isModule":false,"length":6014,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101278,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"197","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/dom.js","startLine":0,"startColumn":0,"endLine":1039,"endColumn":3,"executionContextId":1,"hash":"30e72ad952fc2ec46c62648f85365b042f7ebe3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dom.js.map","hasSourceURL":false,"isModule":false,"length":43470,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101278,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"198","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js","startLine":0,"startColumn":0,"endLine":783,"endColumn":3,"executionContextId":1,"hash":"2e30a361462ed89c34df855eab5446556746128c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextkey.js.map","hasSourceURL":false,"isModule":false,"length":27627,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101278,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"199","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1fdb458288adf82070c6aea9a64d2d602167b4af","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentService.js.map","hasSourceURL":false,"isModule":false,"length":821,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101278,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"200","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"037e9ff3035c244c7ab14f413bbbf43876ea4634","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"host.js.map","hasSourceURL":false,"isModule":false,"length":768,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101279,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"201","url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","startLine":0,"startColumn":0,"endLine":188,"endColumn":3,"executionContextId":1,"hash":"28e423a8104df8e053ec558f953a25dd37b8b727","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"platform.js.map","hasSourceURL":false,"isModule":false,"length":8093,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101279,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"202","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js","startLine":0,"startColumn":0,"endLine":420,"endColumn":3,"executionContextId":1,"hash":"3e34974a796bab921cb5d73e65613e1975c43f5d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"titlebarPart.js.map","hasSourceURL":false,"isModule":false,"length":25442,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.5","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/media/titlebarpart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.17336,"wallTime":1588425101.051857,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"203","url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","startLine":0,"startColumn":0,"endLine":322,"endColumn":3,"executionContextId":1,"hash":"1a9be6100eee938a0dd371f1110c2da67b2aefea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"actions.js.map","hasSourceURL":false,"isModule":false,"length":16101,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"204","url":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":3,"executionContextId":1,"hash":"371fdec367bc655b5593c35841ece4904104ea7c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themeService.js.map","hasSourceURL":false,"isModule":false,"length":5244,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"205","url":"file:///Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js","startLine":0,"startColumn":0,"endLine":141,"endColumn":3,"executionContextId":1,"hash":"1014033e3db24e6b054496b67e2ec09b582b6f6c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspace.js.map","hasSourceURL":false,"isModule":false,"length":6204,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"206","url":"file:///Users/roblou/code/vscode/out/vs/platform/product/common/productService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1f9e0eaaa7b2d92a520255942c4f96c21bbb071c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"productService.js.map","hasSourceURL":false,"isModule":false,"length":787,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"207","url":"file:///Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"131c936f202208415b589ca742f9095b187f4bc7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"electron.js.map","hasSourceURL":false,"isModule":false,"length":784,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"208","url":"file:///Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"379edbc450820d713d2bbdc0c516b0ea18a8a2bb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"windows.js.map","hasSourceURL":false,"isModule":false,"length":3162,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"209","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"2f7602ff1600eb1d6d5b261e8b04cd6065829f6d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextView.js.map","hasSourceURL":false,"isModule":false,"length":915,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"210","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js","startLine":0,"startColumn":0,"endLine":597,"endColumn":3,"executionContextId":1,"hash":"1ba6351b20fd69db6594418224ca339046d186c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionGalleryService.js.map","hasSourceURL":false,"isModule":false,"length":33558,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"211","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js","startLine":0,"startColumn":0,"endLine":13,"endColumn":3,"executionContextId":1,"hash":"374536fe8ad222e16013973c00c6ac6d5ec5de28","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorService.js.map","hasSourceURL":false,"isModule":false,"length":887,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"212","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"1fddf9384db514233c210886a192a73c72c200bd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagement.js.map","hasSourceURL":false,"isModule":false,"length":4272,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"213","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"25ee8d6a464ff63f5ae0791105b8b2d8569df722","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"layoutService.js.map","hasSourceURL":false,"isModule":false,"length":2263,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"214","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js","startLine":0,"startColumn":0,"endLine":152,"endColumn":3,"executionContextId":1,"hash":"3e3114e540857d9d0685ab4059f53c9928eb6a1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionEnablementService.js.map","hasSourceURL":false,"isModule":false,"length":8297,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"215","url":"file:///Users/roblou/code/vscode/out/vs/base/common/codicons.js","startLine":0,"startColumn":0,"endLine":491,"endColumn":3,"executionContextId":1,"hash":"2fbe73ed9567bc002898db7676ddeaaa2513e275","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codicons.js.map","hasSourceURL":false,"isModule":false,"length":37210,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"216","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js","startLine":0,"startColumn":0,"endLine":48,"endColumn":3,"executionContextId":1,"hash":"034fa9fda60f83dd0e6f588638b558e81ab12d6f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextViewService.js.map","hasSourceURL":false,"isModule":false,"length":2676,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"217","url":"file:///Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","startLine":0,"startColumn":0,"endLine":701,"endColumn":3,"executionContextId":1,"hash":"379112ea24fa0403050e6d46bccf9e722efc03a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"listService.js.map","hasSourceURL":false,"isModule":false,"length":46183,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"218","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"3f42ce53687b789642fa8a6549717d131ac2ceca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorWorkerService.js.map","hasSourceURL":false,"isModule":false,"length":915,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101281,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"219","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"059d43cb55defb6e40ecaa72bc72166223cb4cab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersDecorationService.js.map","hasSourceURL":false,"isModule":false,"length":827,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"220","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js","startLine":0,"startColumn":0,"endLine":242,"endColumn":3,"executionContextId":1,"hash":"3623a96d15de0aa72477d583b3e8939108975f17","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markerDecorationsServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":13248,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","startLine":0,"startColumn":0,"endLine":397,"endColumn":3,"executionContextId":1,"hash":"1e76e28ca708a18368d373966fd7da1e01bd85f5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorWorkerServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":19539,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"222","url":"file:///Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"19f2e7100e7e31c507c8ee859826bb893202cd5a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markers.js.map","hasSourceURL":false,"isModule":false,"length":5858,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"223","url":"file:///Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js","startLine":0,"startColumn":0,"endLine":304,"endColumn":3,"executionContextId":1,"hash":"0b302f0415b726633152499618f82e3118931f6d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markerService.js.map","hasSourceURL":false,"isModule":false,"length":11994,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"224","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js","startLine":0,"startColumn":0,"endLine":739,"endColumn":3,"executionContextId":1,"hash":"0a53f681a518086606a014da17df8b5f0f3a2268","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modelServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":40477,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"225","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js","startLine":0,"startColumn":0,"endLine":129,"endColumn":3,"executionContextId":1,"hash":"07ae3d331c9044575f43906317ab71291000987e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textResourceConfigurationServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":8893,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"226","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js","startLine":0,"startColumn":0,"endLine":15,"endColumn":3,"executionContextId":1,"hash":"0dcf60961c17c96e5e94bcf7c2ef834f0bfde276","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modelService.js.map","hasSourceURL":false,"isModule":false,"length":1000,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"227","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"1dca6b6e81f5ab576fb30dd14e5c4eea1bce95e4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textResourceConfigurationService.js.map","hasSourceURL":false,"isModule":false,"length":1011,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"228","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js","startLine":0,"startColumn":0,"endLine":384,"endColumn":3,"executionContextId":1,"hash":"3d83f539a2d638f154ff057c34a7a4063cb3ace8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextKeyService.js.map","hasSourceURL":false,"isModule":false,"length":15732,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101282,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"229","url":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/download.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"01045795695d632d40c961bc0af7ce7a27edaf24","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"download.js.map","hasSourceURL":false,"isModule":false,"length":784,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"230","url":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js","startLine":0,"startColumn":0,"endLine":48,"endColumn":3,"executionContextId":1,"hash":"215da08983dbd68157b4da343b4a83e04a06f63f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"downloadService.js.map","hasSourceURL":false,"isModule":false,"length":2973,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"231","url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"225cdb463bbdc925504fb89aa9061aa33cde987f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menuService.js.map","hasSourceURL":false,"isModule":false,"length":8046,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"232","url":"file:///Users/roblou/code/vscode/out/vs/editor/editor.all.js","startLine":0,"startColumn":0,"endLine":9,"endColumn":3,"executionContextId":1,"hash":"33703d84179c06d948853e53c33cb0535f0453c2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.all.js.map","hasSourceURL":false,"isModule":false,"length":2575,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"233","url":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js","startLine":0,"startColumn":0,"endLine":189,"endColumn":3,"executionContextId":1,"hash":"2cf52e7a30d2564c779f51ac15bfc4c34662f168","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSync.js.map","hasSourceURL":false,"isModule":false,"length":12447,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"234","url":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"2e964d59238b60d82710305d031d1c1266a65973","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncEnablementService.js.map","hasSourceURL":false,"isModule":false,"length":5217,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"235","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js","startLine":0,"startColumn":0,"endLine":37,"endColumn":3,"executionContextId":1,"hash":"1392589d244723e97790356595d571ba5a30b82c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHost.contribution.js.map","hasSourceURL":false,"isModule":false,"length":4348,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"236","url":"file:///Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js","startLine":0,"startColumn":0,"endLine":29,"endColumn":3,"executionContextId":1,"hash":"1dcc799b15255f4a429ee497140a1a715d749034","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"opener.js.map","hasSourceURL":false,"isModule":false,"length":1707,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101283,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"237","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js","startLine":0,"startColumn":0,"endLine":410,"endColumn":3,"executionContextId":1,"hash":"1c524146230c4a760bc4c3c316138b4402649436","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbench.contribution.js.map","hasSourceURL":false,"isModule":false,"length":31088,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"238","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js","startLine":0,"startColumn":0,"endLine":224,"endColumn":3,"executionContextId":1,"hash":"245763785ca4267659571a5a4bc7666467aa938a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"developerActions.js.map","hasSourceURL":false,"isModule":false,"length":14142,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.6","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/media/actions.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.204459,"wallTime":1588425101.082955,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"239","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js","startLine":0,"startColumn":0,"endLine":359,"endColumn":3,"executionContextId":1,"hash":"3294b62a64a5fb97747dc3986b3beeed4889d8a5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"windowActions.js.map","hasSourceURL":false,"isModule":false,"length":21739,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"240","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js","startLine":0,"startColumn":0,"endLine":345,"endColumn":3,"executionContextId":1,"hash":"3376c9953afc15dd1a2b67ee745612c51f818b41","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"helpActions.js.map","hasSourceURL":false,"isModule":false,"length":18735,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"241","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"1a944b0369743add81388fc1b461341d3388ed28","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textInputActions.js.map","hasSourceURL":false,"isModule":false,"length":6170,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"242","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js","startLine":0,"startColumn":0,"endLine":692,"endColumn":3,"executionContextId":1,"hash":"08c41f23780c8c1e2583cfd51581f7b05774bc39","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"layoutActions.js.map","hasSourceURL":false,"isModule":false,"length":41097,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"243","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js","startLine":0,"startColumn":0,"endLine":644,"endColumn":3,"executionContextId":1,"hash":"14c2d3177edf08e215b795ad0b4fa4d744f4af64","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"listCommands.js.map","hasSourceURL":false,"isModule":false,"length":30784,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"244","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js","startLine":0,"startColumn":0,"endLine":241,"endColumn":3,"executionContextId":1,"hash":"28423ba87fa417744ea4492a6cb4b02918966083","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"navigationActions.js.map","hasSourceURL":false,"isModule":false,"length":14762,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"245","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js","startLine":0,"startColumn":0,"endLine":304,"endColumn":3,"executionContextId":1,"hash":"3eac9f6c5389863220d858bda1e868a449a0008c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceActions.js.map","hasSourceURL":false,"isModule":false,"length":18524,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"246","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js","startLine":0,"startColumn":0,"endLine":89,"endColumn":3,"executionContextId":1,"hash":"0ec4854e1903c7997abab16758078d4543292c3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceCommands.js.map","hasSourceURL":false,"isModule":false,"length":5824,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"247","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js","startLine":0,"startColumn":0,"endLine":448,"endColumn":3,"executionContextId":1,"hash":"3defc558607c20a1144901227481ee47724e7adf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menusExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":23754,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101285,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"248","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js","startLine":0,"startColumn":0,"endLine":308,"endColumn":3,"executionContextId":1,"hash":"05d32a301055b07242cd5e7f65181ac2214a8f51","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":17244,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"249","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js","startLine":0,"startColumn":0,"endLine":412,"endColumn":3,"executionContextId":1,"hash":"0ba12d0910051753465f739b46ef092872387f10","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewsExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":26105,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","startLine":0,"startColumn":0,"endLine":815,"endColumn":3,"executionContextId":1,"hash":"228b9a3e4d0a6c8900998cecaee18f3e546c3857","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorPart.js.map","hasSourceURL":false,"isModule":false,"length":42902,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"251","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js","startLine":0,"startColumn":0,"endLine":230,"endColumn":3,"executionContextId":1,"hash":"1c07dc9e47d4e6b00d0bb0294c59492366a29169","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickAccessActions.js.map","hasSourceURL":false,"isModule":false,"length":13550,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","startLine":0,"startColumn":0,"endLine":256,"endColumn":3,"executionContextId":1,"hash":"1e9e59cc46cccd1a73d5d4d5443058850005479e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sidebarPart.js.map","hasSourceURL":false,"isModule":false,"length":15851,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.7","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/media/sidebarpart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.218363,"wallTime":1588425101.096858,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"253","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js","startLine":0,"startColumn":0,"endLine":620,"endColumn":3,"executionContextId":1,"hash":"30961e9839ce7a495f5858c8b45d871d136239ab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activitybarPart.js.map","hasSourceURL":false,"isModule":false,"length":39584,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.8","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/media/activitybarpart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.220398,"wallTime":1588425101.098893,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"254","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js","startLine":0,"startColumn":0,"endLine":367,"endColumn":3,"executionContextId":1,"hash":"2ee2e6bc12e6d30677efd343979bb6381747c57a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"views.js.map","hasSourceURL":false,"isModule":false,"length":24986,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.9","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/media/views.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.222199,"wallTime":1588425101.100694,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101286,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"255","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js","startLine":0,"startColumn":0,"endLine":581,"endColumn":3,"executionContextId":1,"hash":"19ab9d3e9d78804269579272a78991611f111401","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"panelPart.js.map","hasSourceURL":false,"isModule":false,"length":34815,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.10","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/media/panelpart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.225504,"wallTime":1588425101.103999,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"256","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js","startLine":0,"startColumn":0,"endLine":672,"endColumn":3,"executionContextId":1,"hash":"02dfff0637bcb9557bcd7fc5c2867bf975e51a02","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"statusbarPart.js.map","hasSourceURL":false,"isModule":false,"length":35297,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.11","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/media/statusbarpart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.22728,"wallTime":1588425101.105775,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"257","url":"file:///Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js","startLine":0,"startColumn":0,"endLine":491,"endColumn":3,"executionContextId":1,"hash":"09c28632a396121d15dc9b57a027c0243ad8dace","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"undoRedoService.js.map","hasSourceURL":false,"isModule":false,"length":24145,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"258","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js","startLine":0,"startColumn":0,"endLine":390,"endColumn":3,"executionContextId":1,"hash":"1db2583e52b8f871770c308c5a1de7a34c886445","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bulkEditService.js.map","hasSourceURL":false,"isModule":false,"length":20495,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"259","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js","startLine":0,"startColumn":0,"endLine":332,"endColumn":3,"executionContextId":1,"hash":"097530243a84e76b3c5e824a7f0db73f1f3fddcf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionUrlHandler.js.map","hasSourceURL":false,"isModule":false,"length":20437,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"260","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js","startLine":0,"startColumn":0,"endLine":226,"endColumn":3,"executionContextId":1,"hash":"1e0140c34e4a0ad7360c11bfb77eda0757e22570","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingEditing.js.map","hasSourceURL":false,"isModule":false,"length":14850,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"261","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js","startLine":0,"startColumn":0,"endLine":476,"endColumn":3,"executionContextId":1,"hash":"0cdfc472594ea89763a1ae1840346e5654f3d945","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"progressService.js.map","hasSourceURL":false,"isModule":false,"length":27848,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.12","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/media/progressService.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.232408,"wallTime":1588425101.110903,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101287,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"262","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js","startLine":0,"startColumn":0,"endLine":83,"endColumn":3,"executionContextId":1,"hash":"11bbc7cc212e34f548c4dec968a0efdd6f2402c2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeEditorService.js.map","hasSourceURL":false,"isModule":false,"length":5734,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"263","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js","startLine":0,"startColumn":0,"endLine":319,"endColumn":3,"executionContextId":1,"hash":"1d4428664ad88b8f807a7b1e71244c4053d957f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"decorationsService.js.map","hasSourceURL":false,"isModule":false,"length":15268,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","startLine":0,"startColumn":0,"endLine":949,"endColumn":3,"executionContextId":1,"hash":"0eff86c4a3c6892902f351de404e7f79003a33f5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorService.js.map","hasSourceURL":false,"isModule":false,"length":56157,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"265","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js","startLine":0,"startColumn":0,"endLine":165,"endColumn":3,"executionContextId":1,"hash":"34846de1452192a82cccd820c9722674553c3c92","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textModelResolverService.js.map","hasSourceURL":false,"isModule":false,"length":9593,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"266","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js","startLine":0,"startColumn":0,"endLine":819,"endColumn":3,"executionContextId":1,"hash":"280594137331738e4cfea32a0945f4f32789ca91","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"history.js.map","hasSourceURL":false,"isModule":false,"length":46568,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"267","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"2b2d9e3867a1f4e847a2d4d621b2d6d91ad16a2e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activityService.js.map","hasSourceURL":false,"isModule":false,"length":3590,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"268","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js","startLine":0,"startColumn":0,"endLine":554,"endColumn":3,"executionContextId":1,"hash":"1745b12b2d1ef72647f1f6b69c6595aa0d431051","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesService.js.map","hasSourceURL":false,"isModule":false,"length":38227,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","startLine":0,"startColumn":0,"endLine":678,"endColumn":3,"executionContextId":1,"hash":"1aaf8def4b49c28b462893f6109c979f206f08cc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingService.js.map","hasSourceURL":false,"isModule":false,"length":37412,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"270","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js","startLine":0,"startColumn":0,"endLine":134,"endColumn":3,"executionContextId":1,"hash":"39e9dc3e53d6b3285112b6cf48e6d1f61dc6b627","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"untitledTextEditorService.js.map","hasSourceURL":false,"isModule":false,"length":8279,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"271","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"36de2e5a3cc3e89612cdf3e53157e3bb0d67d3ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textResourcePropertiesService.js.map","hasSourceURL":false,"isModule":false,"length":4271,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"272","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js","startLine":0,"startColumn":0,"endLine":205,"endColumn":3,"executionContextId":1,"hash":"2233ef85467e7f4f42aee7fda1170c4c632faa2e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbenchModeService.js.map","hasSourceURL":false,"isModule":false,"length":12090,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"273","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js","startLine":0,"startColumn":0,"endLine":191,"endColumn":3,"executionContextId":1,"hash":"35fc36f144ed32c507947977305ac8b061325be5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"openerService.js.map","hasSourceURL":false,"isModule":false,"length":9884,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"274","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"14a1723407f9eedd6ef5076cab51246e6b7bae9a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonEditingService.js.map","hasSourceURL":false,"isModule":false,"length":7560,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":3,"executionContextId":1,"hash":"084c0ee99bf1be7e743dd09d66f889da7e80830e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commandService.js.map","hasSourceURL":false,"isModule":false,"length":5627,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"276","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js","startLine":0,"startColumn":0,"endLine":267,"endColumn":3,"executionContextId":1,"hash":"3cae9c628ed17e7d18743aee864f801c1536eec2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"labelService.js.map","hasSourceURL":false,"isModule":false,"length":16137,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"277","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js","startLine":0,"startColumn":0,"endLine":552,"endColumn":3,"executionContextId":1,"hash":"21d5da7b575d91d731202b16166f52087ebdd177","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbenchThemeService.js.map","hasSourceURL":false,"isModule":false,"length":36240,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"278","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"3a59d7451db4a1c849ddcf372eebedac7b2dab53","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationService.js.map","hasSourceURL":false,"isModule":false,"length":9320,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"279","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js","startLine":0,"startColumn":0,"endLine":273,"endColumn":3,"executionContextId":1,"hash":"267e54818530b4ea0cb1ac35bb7893fb35e09360","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionEnablementService.js.map","hasSourceURL":false,"isModule":false,"length":16555,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101288,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"280","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":3,"executionContextId":1,"hash":"2ea94798714fc5530d2b9e97703c1d122bbf7805","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"staticExtensions.js.map","hasSourceURL":false,"isModule":false,"length":2922,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"281","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js","startLine":0,"startColumn":0,"endLine":283,"endColumn":3,"executionContextId":1,"hash":"1daf98ba53b62467000f2b0e8943db7d7bf4c9d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteExplorerService.js.map","hasSourceURL":false,"isModule":false,"length":14584,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"282","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js","startLine":0,"startColumn":0,"endLine":104,"endColumn":3,"executionContextId":1,"hash":"3094868484bdc2823be3c689064dab0b0eb9f3a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workingCopyService.js.map","hasSourceURL":false,"isModule":false,"length":5255,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":3,"executionContextId":1,"hash":"222defee410f638714b531426dff5cc504961f8d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workingCopyFileService.js.map","hasSourceURL":false,"isModule":false,"length":9394,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"284","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js","startLine":0,"startColumn":0,"endLine":151,"endColumn":3,"executionContextId":1,"hash":"0b2f241e90bb70aa49be01976819360c3c791d25","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"filesConfigurationService.js.map","hasSourceURL":false,"isModule":false,"length":10537,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"285","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js","startLine":0,"startColumn":0,"endLine":1006,"endColumn":3,"executionContextId":1,"hash":"325b6aa578b0e93577fccc999f4463e532c57871","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferences.contribution.js.map","hasSourceURL":false,"isModule":false,"length":62035,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.13","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/preferences.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.252459,"wallTime":1588425101.130952,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"286","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","startLine":0,"startColumn":0,"endLine":525,"endColumn":3,"executionContextId":1,"hash":"3bec1adc4701b0aa5ce9b0951a678e1a3054ca38","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewDescriptorService.js.map","hasSourceURL":false,"isModule":false,"length":33727,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"287","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js","startLine":0,"startColumn":0,"endLine":134,"endColumn":3,"executionContextId":1,"hash":"3dd199d3a598b9a61d937196bdc4373f06f204d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetry.contribution.js.map","hasSourceURL":false,"isModule":false,"length":9600,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"288","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js","startLine":0,"startColumn":0,"endLine":53,"endColumn":3,"executionContextId":1,"hash":"078961366e0006941c95ef1b5db1ed1e15d2b7bc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInputService.js.map","hasSourceURL":false,"isModule":false,"length":4176,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"289","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js","startLine":0,"startColumn":0,"endLine":330,"endColumn":3,"executionContextId":1,"hash":"245d4e663ecc46ff7903a13d7eddf9970c132458","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingsEditorContribution.js.map","hasSourceURL":false,"isModule":false,"length":19751,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101289,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"290","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js","startLine":0,"startColumn":0,"endLine":62,"endColumn":3,"executionContextId":1,"hash":"22ab00fe8b3395e00657f49992065ab0558446e9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncUtil.js.map","hasSourceURL":false,"isModule":false,"length":4162,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","startLine":0,"startColumn":0,"endLine":223,"endColumn":3,"executionContextId":1,"hash":"285d3d9107de48c77b7be59c1eb829c576f3b801","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebook.contribution.js.map","hasSourceURL":false,"isModule":false,"length":15311,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"292","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":3,"executionContextId":1,"hash":"0c8c79a661bba32b623e91e6cad1e79a75e298ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickAccess.contribution.js.map","hasSourceURL":false,"isModule":false,"length":7487,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"293","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"1b43b8352cf9935d2772fd5da4aaf07d77578292","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logs.contribution.js.map","hasSourceURL":false,"isModule":false,"length":6722,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"294","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js","startLine":0,"startColumn":0,"endLine":494,"endColumn":3,"executionContextId":1,"hash":"293ef54238a26a8c7345fd0d1f2e59d16bb6c356","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesSearch.js.map","hasSourceURL":false,"isModule":false,"length":28750,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"295","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js","startLine":0,"startColumn":0,"endLine":378,"endColumn":3,"executionContextId":1,"hash":"3c5f15a6a545e16f2581b55a5eee43be6708c415","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"files.contribution.js.map","hasSourceURL":false,"isModule":false,"length":28367,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"296","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js","startLine":0,"startColumn":0,"endLine":243,"endColumn":3,"executionContextId":1,"hash":"374bdc9d7618e9810f677d9513e1f777509fdc09","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerViewlet.js.map","hasSourceURL":false,"isModule":false,"length":17560,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101290,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.14","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/media/explorerviewlet.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.261851,"wallTime":1588425101.140344,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"297","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"360686542149bbd221cb6ad9252dc719809f3410","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backup.contribution.js.map","hasSourceURL":false,"isModule":false,"length":962,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"298","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js","startLine":0,"startColumn":0,"endLine":607,"endColumn":3,"executionContextId":1,"hash":"1de1573b032e5d6e3d6b679db17c840c43fb53d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileActions.contribution.js.map","hasSourceURL":false,"isModule":false,"length":35145,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"299","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js","startLine":0,"startColumn":0,"endLine":311,"endColumn":3,"executionContextId":1,"hash":"051bad1857d4b2ca62ebc782979232a143462ead","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bulkEdit.contribution.js.map","hasSourceURL":false,"isModule":false,"length":16665,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"300","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js","startLine":0,"startColumn":0,"endLine":757,"endColumn":3,"executionContextId":1,"hash":"0fc2b58707adeb245249a1e6c1de691c205a4600","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"search.contribution.js.map","hasSourceURL":false,"isModule":false,"length":46962,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"301","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js","startLine":0,"startColumn":0,"endLine":167,"endColumn":3,"executionContextId":1,"hash":"1e1a339e21a571ac75725d707b8594434579d422","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchEditor.contribution.js.map","hasSourceURL":false,"isModule":false,"length":12731,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"302","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js","startLine":0,"startColumn":0,"endLine":1542,"endColumn":3,"executionContextId":1,"hash":"0307110f77125a80627354e680a9624874f7fc46","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchView.js.map","hasSourceURL":false,"isModule":false,"length":95599,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.15","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/media/searchview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.269762,"wallTime":1588425101.148254,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"303","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js","startLine":0,"startColumn":0,"endLine":164,"endColumn":3,"executionContextId":1,"hash":"2e3573613f5caff3525ac66c737e128c74dc72f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scm.contribution.js.map","hasSourceURL":false,"isModule":false,"length":10875,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"304","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","startLine":0,"startColumn":0,"endLine":256,"endColumn":3,"executionContextId":1,"hash":"1da126279b0d35e129e9c9f5627fcbd10dd947b6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scmViewlet.js.map","hasSourceURL":false,"isModule":false,"length":16018,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.16","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/media/scmViewlet.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.272,"wallTime":1588425101.150493,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"305","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js","startLine":0,"startColumn":0,"endLine":561,"endColumn":3,"executionContextId":1,"hash":"279fb30d659c0ec325198246b5976dd52c09a6c5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breakpointEditorContribution.js.map","hasSourceURL":false,"isModule":false,"length":38470,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"306","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js","startLine":0,"startColumn":0,"endLine":143,"endColumn":3,"executionContextId":1,"hash":"3f03d5e44e0e2df846f611d3b05a58d17548f53b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"callStackEditorContribution.js.map","hasSourceURL":false,"isModule":false,"length":8591,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101291,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"307","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js","startLine":0,"startColumn":0,"endLine":620,"endColumn":3,"executionContextId":1,"hash":"2e21897a012950323f717ab95044f2e15bd453f3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debug.contribution.js.map","hasSourceURL":false,"isModule":false,"length":46671,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.17","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debug.contribution.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.276611,"wallTime":1588425101.155104,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.18","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debugHover.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.276935,"wallTime":1588425101.155428,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"308","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js","startLine":0,"startColumn":0,"endLine":381,"endColumn":3,"executionContextId":1,"hash":"201fbcaa2e75bd5c73836f613707921c4fb631a8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markers.contribution.js.map","hasSourceURL":false,"isModule":false,"length":20645,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"309","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js","startLine":0,"startColumn":0,"endLine":492,"endColumn":3,"executionContextId":1,"hash":"348f82d4a5a96b206a08126924e2ef4e7ce27fe2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugEditorContribution.js.map","hasSourceURL":false,"isModule":false,"length":27645,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"310","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js","startLine":0,"startColumn":0,"endLine":693,"endColumn":3,"executionContextId":1,"hash":"372c621937f962f7481a0456225c865050e31eb0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"repl.js.map","hasSourceURL":false,"isModule":false,"length":41638,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.19","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/repl.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.284218,"wallTime":1588425101.162711,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"311","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"1453c3ef98b3fb344925a75ab6a2d40f6b8d12d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webview.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3377,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"312","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js","startLine":0,"startColumn":0,"endLine":23,"endColumn":3,"executionContextId":1,"hash":"1e665ca40e45d9f333305f9d81983c2b3c4c3f23","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"comments.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1652,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101292,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"313","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js","startLine":0,"startColumn":0,"endLine":61,"endColumn":3,"executionContextId":1,"hash":"2d8dfd5534eb69fc45edab5f1c3c4fe25ebc763b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"url.contribution.js.map","hasSourceURL":false,"isModule":false,"length":4428,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"314","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js","startLine":0,"startColumn":0,"endLine":216,"endColumn":3,"executionContextId":1,"hash":"3056e2801233bf3d75468ee96625ab6a2a6c5ac1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugViewlet.js.map","hasSourceURL":false,"isModule":false,"length":13958,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.20","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debugViewlet.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.287014,"wallTime":1588425101.165506,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"315","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js","startLine":0,"startColumn":0,"endLine":396,"endColumn":3,"executionContextId":1,"hash":"0ad597f870feb1f41d45d993358c347156d9a33e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensions.contribution.js.map","hasSourceURL":false,"isModule":false,"length":28826,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"316","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":3,"executionContextId":1,"hash":"08f8ea3245a4865f01f74518c51f8d18093cf32f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customEditor.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2201,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"317","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js","startLine":0,"startColumn":0,"endLine":296,"endColumn":3,"executionContextId":1,"hash":"10a3cc932d6e653950df9ef58d257e8e27865848","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputView.js.map","hasSourceURL":false,"isModule":false,"length":18473,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"318","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js","startLine":0,"startColumn":0,"endLine":282,"endColumn":3,"executionContextId":1,"hash":"0dca4905813b3a444c95df8c089d20a742f5e32c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"output.contribution.js.map","hasSourceURL":false,"isModule":false,"length":16062,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.21","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/media/output.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.292097,"wallTime":1588425101.17059,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"319","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js","startLine":0,"startColumn":0,"endLine":600,"endColumn":3,"executionContextId":1,"hash":"0872df4f8a2d40df1193a42d6eaa3d545b691553","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsViewlet.js.map","hasSourceURL":false,"isModule":false,"length":43802,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.22","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.29431,"wallTime":1588425101.172802,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101293,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"320","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"3db312029114adad8173c5c4561719530187777d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminal.contribution.js.map","hasSourceURL":false,"isModule":false,"length":12874,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.23","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/scrollbar.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.295831,"wallTime":1588425101.174324,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.24","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/terminal.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.2961,"wallTime":1588425101.174593,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.25","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/widgets.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.296348,"wallTime":1588425101.17484,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.26","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/xterm.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.296587,"wallTime":1588425101.175078,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"321","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js","startLine":0,"startColumn":0,"endLine":10,"endColumn":3,"executionContextId":1,"hash":"083fe25c473437fe438436e9a074816757b72dd0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariable.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1010,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"322","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js","startLine":0,"startColumn":0,"endLine":349,"endColumn":3,"executionContextId":1,"hash":"1bac961c1771c2cb41ba2b3f431963640fac531f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"task.contribution.js.map","hasSourceURL":false,"isModule":false,"length":22419,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"323","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js","startLine":0,"startColumn":0,"endLine":131,"endColumn":3,"executionContextId":1,"hash":"1d3121349d7b1e9b0feda6912a80a99846316d52","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remote.contribution.js.map","hasSourceURL":false,"isModule":false,"length":8135,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"324","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js","startLine":0,"startColumn":0,"endLine":300,"endColumn":3,"executionContextId":1,"hash":"2e4d935743582e016e262fe62310027a738e08d4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalView.js.map","hasSourceURL":false,"isModule":false,"length":20787,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"325","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js","startLine":0,"startColumn":0,"endLine":178,"endColumn":3,"executionContextId":1,"hash":"15407aef3e3f5efa37fbe0dc7e5673412def1103","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"relauncher.contribution.js.map","hasSourceURL":false,"isModule":false,"length":12990,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"326","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js","startLine":0,"startColumn":0,"endLine":602,"endColumn":3,"executionContextId":1,"hash":"245b7dd48025c1cf3ade243a2cdd037b39637d00","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remote.js.map","hasSourceURL":false,"isModule":false,"length":36149,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.27","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/media/remoteViewlet.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.303497,"wallTime":1588425101.181989,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"327","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js","startLine":0,"startColumn":0,"endLine":9,"endColumn":3,"executionContextId":1,"hash":"003781d608e173675bc59eb54f122db6308bcd75","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeEditor.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1092,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101294,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"328","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js","startLine":0,"startColumn":0,"endLine":118,"endColumn":3,"executionContextId":1,"hash":"396c7d5e8709af411afcced9c35e44e413fd2571","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"externalTerminal.contribution.js.map","hasSourceURL":false,"isModule":false,"length":7683,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"329","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"238d3019009780f945618713b7523481573e59eb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippets.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3840,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"330","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js","startLine":0,"startColumn":0,"endLine":284,"endColumn":3,"executionContextId":1,"hash":"02d3a22023a51c8c2220f27816952e1e793aff52","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetsService.js.map","hasSourceURL":false,"isModule":false,"length":17183,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"331","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js","startLine":0,"startColumn":0,"endLine":9,"endColumn":3,"executionContextId":1,"hash":"0fbd37527e079d3d3337596b12c6edac1f384e31","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"emmet.contribution.js.map","hasSourceURL":false,"isModule":false,"length":668,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"332","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js","startLine":0,"startColumn":0,"endLine":155,"endColumn":3,"executionContextId":1,"hash":"245be7160312f0fb0c9435bb620984e4556a7204","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"insertSnippet.js.map","hasSourceURL":false,"isModule":false,"length":8055,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"333","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js","startLine":0,"startColumn":0,"endLine":237,"endColumn":3,"executionContextId":1,"hash":"04bd6a58338a54f1349c12e684f7fd5e65c64e6e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configureSnippets.js.map","hasSourceURL":false,"isModule":false,"length":11829,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"334","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js","startLine":0,"startColumn":0,"endLine":136,"endColumn":3,"executionContextId":1,"hash":"35b381ba3c3148ff3bdd5aeb0353e24f1b652e17","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tabCompletion.js.map","hasSourceURL":false,"isModule":false,"length":8010,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"335","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js","startLine":0,"startColumn":0,"endLine":9,"endColumn":3,"executionContextId":1,"hash":"1368f7f41a46576f4d8bc41fa09a71f01e9e348c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"format.contribution.js.map","hasSourceURL":false,"isModule":false,"length":656,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"336","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js","startLine":0,"startColumn":0,"endLine":326,"endColumn":3,"executionContextId":1,"hash":"2c932001294218fd28ca16eb07e4f3625e8a6967","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themes.contribution.js.map","hasSourceURL":false,"isModule":false,"length":19436,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"337","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js","startLine":0,"startColumn":0,"endLine":29,"endColumn":3,"executionContextId":1,"hash":"3e85b59585254a244bc1e69500df7cbc330fc864","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"update.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2280,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"338","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js","startLine":0,"startColumn":0,"endLine":160,"endColumn":3,"executionContextId":1,"hash":"3f9e1f2d182c27f438ed7bfb85cb119d6583abd6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watermark.js.map","hasSourceURL":false,"isModule":false,"length":10832,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101295,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.28","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.310428,"wallTime":1588425101.18892,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"339","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js","startLine":0,"startColumn":0,"endLine":91,"endColumn":3,"executionContextId":1,"hash":"2956233d3566de165e63081dbff56fe94716d310","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"nps.contribution.js.map","hasSourceURL":false,"isModule":false,"length":6359,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"340","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js","startLine":0,"startColumn":0,"endLine":128,"endColumn":3,"executionContextId":1,"hash":"05cf09f182ff12df4cbacc837e634e132819e6df","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languageSurveys.contribution.js.map","hasSourceURL":false,"isModule":false,"length":9410,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"341","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js","startLine":0,"startColumn":0,"endLine":255,"endColumn":3,"executionContextId":1,"hash":"2b226615a4c3ea140847ea220120c5757b19b57f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"welcomeOverlay.js.map","hasSourceURL":false,"isModule":false,"length":13478,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.29","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.312508,"wallTime":1588425101.191,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"342","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"2712b82a6ef2f8bb0f9624cfaec28dcc476fbf83","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"welcomePage.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3969,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"343","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js","startLine":0,"startColumn":0,"endLine":198,"endColumn":3,"executionContextId":1,"hash":"096033e018b7d10214aa28182efc99015d83cde0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"callHierarchy.contribution.js.map","hasSourceURL":false,"isModule":false,"length":11384,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"344","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"31c672019af616c16e41b8bc895197386ad48e61","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"experiments.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1958,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"345","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js","startLine":0,"startColumn":0,"endLine":10,"endColumn":3,"executionContextId":1,"hash":"165f604e51b2b5404457a653936125051c2c3c20","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"feedback.contribution.js.map","hasSourceURL":false,"isModule":false,"length":970,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"346","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js","startLine":0,"startColumn":0,"endLine":201,"endColumn":3,"executionContextId":1,"hash":"39f4eca2042d2dc36b142119171dee591371fe07","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outline.contribution.js.map","hasSourceURL":false,"isModule":false,"length":10234,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"347","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"00fc1acb2b57098e4c111c875f4575496d25e3ba","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSync.contribution.js.map","hasSourceURL":false,"isModule":false,"length":1201,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"348","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"3ceaad275fb356694c29e061288eaab77e8776b8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"walkThrough.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3509,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"349","url":"file:///Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"00a1b6a8a01768b859c34d9f16605a2822cec9ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"platform.js.map","hasSourceURL":false,"isModule":false,"length":1222,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"350","url":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js","startLine":0,"startColumn":0,"endLine":325,"endColumn":3,"executionContextId":1,"hash":"319a51f721ac0dbd22fc19ca2d3be3df14e33348","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationRegistry.js.map","hasSourceURL":false,"isModule":false,"length":18198,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101296,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"351","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js","startLine":0,"startColumn":0,"endLine":76,"endColumn":3,"executionContextId":1,"hash":"05d42d2627942545492df0b76a8e2006744c773d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"timeline.contribution.js.map","hasSourceURL":false,"isModule":false,"length":4770,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"352","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"1964fc3899e7bc1c79678f3b6159ea0e80e2f787","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActions.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3464,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"353","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"27707bb230e6ece4023b916e229836747f46f8a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewsWelcome.contribution.js.map","hasSourceURL":false,"isModule":false,"length":2684,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"354","url":"file:///Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"32bcca2b2d178ab16b6abf575ff4550e7b6448a4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commands.js.map","hasSourceURL":false,"isModule":false,"length":4140,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"355","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/actions.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":3,"executionContextId":1,"hash":"212c742c6408400b0d72e35f0f58b79276349d38","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"actions.js.map","hasSourceURL":false,"isModule":false,"length":5573,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"356","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":3,"executionContextId":1,"hash":"085568391284b77c24e9f0537d1e3b422163077f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingsRegistry.js.map","hasSourceURL":false,"isModule":false,"length":7762,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"357","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"18579adb5eb985e31bc46f87542b5af2211258e4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"developerActions.js.map","hasSourceURL":false,"isModule":false,"length":4611,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"358","url":"file:///Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"2068b58131bf7a293a6dc8ce3f78b6c03df63940","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonContributionRegistry.js.map","hasSourceURL":false,"isModule":false,"length":1797,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"359","url":"file:///Users/roblou/code/vscode/out/vs/platform/product/common/product.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"3b85db87317ff7b05f3fc203200936b17ac7479c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"product.js.map","hasSourceURL":false,"isModule":false,"length":2182,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"360","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":3,"executionContextId":1,"hash":"223c69c28573ee92332c6fce8ff764da717474d4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextkeys.js.map","hasSourceURL":false,"isModule":false,"length":1668,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"361","url":"file:///Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"3f34fed24f74e9a10e2cef940b06e31714fb668d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dialogs.js.map","hasSourceURL":false,"isModule":false,"length":2206,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"362","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor.js","startLine":0,"startColumn":0,"endLine":750,"endColumn":3,"executionContextId":1,"hash":"0ecf70714f78b0200bdaa078bddad26450ddaf26","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.js.map","hasSourceURL":false,"isModule":false,"length":34411,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"363","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js","startLine":0,"startColumn":0,"endLine":253,"endColumn":3,"executionContextId":1,"hash":"152c04fb8d2e66b3189e03608faa7c1872916eab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"windowActions.js.map","hasSourceURL":false,"isModule":false,"length":14662,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.30","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/media/actions.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.325184,"wallTime":1588425101.203675,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"364","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","startLine":0,"startColumn":0,"endLine":593,"endColumn":3,"executionContextId":1,"hash":"19faaee406f72ca379e10f6b45d693ab329a34d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"uri.js.map","hasSourceURL":false,"isModule":false,"length":23807,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"365","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/files.js","startLine":0,"startColumn":0,"endLine":319,"endColumn":3,"executionContextId":1,"hash":"2a34e7bc686cd76c3859154a87d686fa317368c4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"files.js.map","hasSourceURL":false,"isModule":false,"length":16421,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"366","url":"file:///Users/roblou/code/vscode/out/vs/base/common/network.js","startLine":0,"startColumn":0,"endLine":92,"endColumn":3,"executionContextId":1,"hash":"139081e874d600176ad6e0c55b8d2e3d10ea66e3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"network.js.map","hasSourceURL":false,"isModule":false,"length":3756,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"367","url":"file:///Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js","startLine":0,"startColumn":0,"endLine":297,"endColumn":3,"executionContextId":1,"hash":"2cce89d8265c3d24448281ce52546c271410d5d0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaces.js.map","hasSourceURL":false,"isModule":false,"length":16256,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"368","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"0c994b8c67ea75db2863548874dad6ee764a652e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"history.js.map","hasSourceURL":false,"isModule":false,"length":780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"369","url":"file:///Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js","startLine":0,"startColumn":0,"endLine":101,"endColumn":3,"executionContextId":1,"hash":"2c40acad2b9b29813834a4301d58be6b70530015","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lifecycle.js.map","hasSourceURL":false,"isModule":false,"length":4787,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"370","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"3694dc9c31b8d1b14ace47515023353618bee4ca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modeService.js.map","hasSourceURL":false,"isModule":false,"length":775,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"371","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js","startLine":0,"startColumn":0,"endLine":244,"endColumn":3,"executionContextId":1,"hash":"32a1f0a1447364da07c86d6d837d200338e8eb81","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractFileDialogService.js.map","hasSourceURL":false,"isModule":false,"length":16096,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"372","url":"file:///Users/roblou/code/vscode/out/vs/base/common/severity.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"20134acc499a8a6c7ade9684bf7ea1d670e95fb5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"severity.js.map","hasSourceURL":false,"isModule":false,"length":2161,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"373","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"0acd915c6f9126833fcd3d8ca82759276739e46a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleFileDialog.js.map","hasSourceURL":false,"isModule":false,"length":4235,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"374","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1927f603498b98f07a66cadf7b1b35007f7eec97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"integrity.js.map","hasSourceURL":false,"isModule":false,"length":788,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"375","url":"file:///Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js","startLine":0,"startColumn":0,"endLine":58,"endColumn":3,"executionContextId":1,"hash":"0f04ac9e331554d60ad7e1b222db7faa54fb3040","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notification.js.map","hasSourceURL":false,"isModule":false,"length":2798,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101297,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"376","url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","startLine":0,"startColumn":0,"endLine":221,"endColumn":3,"executionContextId":1,"hash":"1881a10b87ba4b0a6b3239acab60060064f92aec","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lifecycle.js.map","hasSourceURL":false,"isModule":false,"length":7830,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","startLine":0,"startColumn":0,"endLine":353,"endColumn":3,"executionContextId":1,"hash":"310ab12d55e130e67093e359c7161ac35e70773a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"log.js.map","hasSourceURL":false,"isModule":false,"length":13180,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"378","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"02601dd29ba2bafc4da2990292da70b050d593e9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbenchThemeService.js.map","hasSourceURL":false,"isModule":false,"length":3373,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","startLine":0,"startColumn":0,"endLine":445,"endColumn":3,"executionContextId":1,"hash":"36deb1628008e1a33b1ce0b14b90f48356f89b90","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractTextMateService.js.map","hasSourceURL":false,"isModule":false,"length":27140,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"380","url":"file:///Users/roblou/code/vscode/out/vs/base/common/amd.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":3,"executionContextId":1,"hash":"28fc03b16a1c82fa4a9adc205aab3504339361a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"amd.js.map","hasSourceURL":false,"isModule":false,"length":1068,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","startLine":0,"startColumn":0,"endLine":158,"endColumn":3,"executionContextId":1,"hash":"2a0896f726c0baa17a01076e3fd9a56c79dbc86c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"errors.js.map","hasSourceURL":false,"isModule":false,"length":5827,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"382","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js","startLine":0,"startColumn":0,"endLine":1210,"endColumn":3,"executionContextId":1,"hash":"1495883603c5686573fa8c5f0b8ac5f416c48d9f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tokensStore.js.map","hasSourceURL":false,"isModule":false,"length":57434,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"383","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"3ab5076e0bec636c3c0960d8c2e377347f71af23","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionResourceLoader.js.map","hasSourceURL":false,"isModule":false,"length":844,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"384","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js","startLine":0,"startColumn":0,"endLine":182,"endColumn":3,"executionContextId":1,"hash":"1078595700b43cb4082f29e30e004a4546f470dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.cp.js.map","hasSourceURL":false,"isModule":false,"length":9111,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"385","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js","startLine":0,"startColumn":0,"endLine":680,"endColumn":3,"executionContextId":1,"hash":"0d130d583743ea712bb5a5429322ba6d0f534520","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.js.map","hasSourceURL":false,"isModule":false,"length":29980,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"386","url":"file:///Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"107fb328a343672f65179aff576114fc0318920d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environment.js.map","hasSourceURL":false,"isModule":false,"length":847,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"387","url":"file:///Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js","startLine":0,"startColumn":0,"endLine":342,"endColumn":3,"executionContextId":1,"hash":"05afb0ca2f95716728d276221b53fb450364b011","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentService.js.map","hasSourceURL":false,"isModule":false,"length":17518,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"388","url":"file:///Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js","startLine":0,"startColumn":0,"endLine":79,"endColumn":3,"executionContextId":1,"hash":"0e49ab4b2310e79e2ccd35ab31c708dc0a820e2e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"progress.js.map","hasSourceURL":false,"isModule":false,"length":4102,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"389","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"1c6f18bf84fd9cfe0813cc66444a56e77a6d3df0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webWorker.js.map","hasSourceURL":false,"isModule":false,"length":3659,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"390","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js","startLine":0,"startColumn":0,"endLine":302,"endColumn":3,"executionContextId":1,"hash":"151113cb4d38efaa57a4a030aff443692d531187","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"search.js.map","hasSourceURL":false,"isModule":false,"length":15215,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"391","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js","startLine":0,"startColumn":0,"endLine":369,"endColumn":3,"executionContextId":1,"hash":"0da0d7e23203547450b6b466ae9ee37b734e8b95","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchService.js.map","hasSourceURL":false,"isModule":false,"length":19615,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"392","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"1f3900cc702d0bc94e89f40b1bc3c1b401fc906b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetry.js.map","hasSourceURL":false,"isModule":false,"length":1469,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"393","url":"file:///Users/roblou/code/vscode/out/vs/base/common/performance.js","startLine":0,"startColumn":0,"endLine":109,"endColumn":3,"executionContextId":1,"hash":"042cb3e7a3c699087c74046781c29388638080bb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2703,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"394","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":3,"executionContextId":1,"hash":"3cae8a598b3756c601be6b1322a46bdd19d37786","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensions.js.map","hasSourceURL":false,"isModule":false,"length":5137,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"395","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"1365efaf22a230517c20055cb8801c4960f22bf2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchIpc.js.map","hasSourceURL":false,"isModule":false,"length":1772,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"396","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"0ff8eecd9b03cb7a1b88027ca66c86383fd4b814","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"serviceCollection.js.map","hasSourceURL":false,"isModule":false,"length":1351,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","startLine":0,"startColumn":0,"endLine":344,"endColumn":3,"executionContextId":1,"hash":"069335ba7aadebe03345869f42345b85134b273d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbench.js.map","hasSourceURL":false,"isModule":false,"length":21404,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"398","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js","startLine":0,"startColumn":0,"endLine":609,"endColumn":3,"executionContextId":1,"hash":"208b641d4261dfe02ffcac3b783d4d3f796a761c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationService.js.map","hasSourceURL":false,"isModule":false,"length":38506,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"399","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js","startLine":0,"startColumn":0,"endLine":79,"endColumn":3,"executionContextId":1,"hash":"2a66aa0b0a92e95d3b89f6b67658dae632413eb9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logIpc.js.map","hasSourceURL":false,"isModule":false,"length":3154,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"400","url":"file:///Users/roblou/code/vscode/out/vs/base/common/extpath.js","startLine":0,"startColumn":0,"endLine":265,"endColumn":3,"executionContextId":1,"hash":"0e1abe5e7be524127a2a997c77a13d300cdcc235","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extpath.js.map","hasSourceURL":false,"isModule":false,"length":10518,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101298,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"401","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js","startLine":0,"startColumn":0,"endLine":706,"endColumn":3,"executionContextId":1,"hash":"08d21c5a263d704e7ae382d1582495535f3cfcab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"window.js.map","hasSourceURL":false,"isModule":false,"length":45962,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"402","url":"file:///Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js","startLine":0,"startColumn":0,"endLine":170,"endColumn":3,"executionContextId":1,"hash":"0b22ffb00f4df3bf1e4de91dc83655240d9dbf76","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storageIpc.js.map","hasSourceURL":false,"isModule":false,"length":8658,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"403","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js","startLine":0,"startColumn":0,"endLine":58,"endColumn":3,"executionContextId":1,"hash":"149c31c90889d9b161f6a92e7a6ba61c6f9ec11a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentService.js.map","hasSourceURL":false,"isModule":false,"length":4068,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"404","url":"file:///Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js","startLine":0,"startColumn":0,"endLine":65,"endColumn":3,"executionContextId":1,"hash":"00f896a6784a1d00175d1d8b0d8907b87e450d58","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"driver.js.map","hasSourceURL":false,"isModule":false,"length":4274,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"405","url":"file:///Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js","startLine":0,"startColumn":0,"endLine":207,"endColumn":3,"executionContextId":1,"hash":"279df55e0d3c506a820cab5637c4d0250bfb201e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storageService.js.map","hasSourceURL":false,"isModule":false,"length":12469,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"406","url":"file:///Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":3,"executionContextId":1,"hash":"0b8093f29c1c0e9266fb10dc2fc5ba2d7f51746e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainProcessService.js.map","hasSourceURL":false,"isModule":false,"length":1505,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"407","url":"file:///Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"1e165ccb354ead5b531ba17500b53bd43f5d968c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAuthorityResolverService.js.map","hasSourceURL":false,"isModule":false,"length":2699,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"408","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js","startLine":0,"startColumn":0,"endLine":857,"endColumn":3,"executionContextId":1,"hash":"05a7991b375ffcba5789a7707006c466171d40a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileService.js.map","hasSourceURL":false,"isModule":false,"length":54437,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"409","url":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"1b46e54367f32235407162237ae9d4b96bcc7c98","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAuthorityResolver.js.map","hasSourceURL":false,"isModule":false,"length":2854,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"410","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"3acdbb93563f60e421e933ff626a19241391a145","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diskFileSystemProvider.js.map","hasSourceURL":false,"isModule":false,"length":1722,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"411","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js","startLine":0,"startColumn":0,"endLine":53,"endColumn":3,"executionContextId":1,"hash":"234cf9b91344eadf11575f96711536f01bd46c3b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textMateService.js.map","hasSourceURL":false,"isModule":false,"length":3297,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"412","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"24545b1948717428071189f3c49f61b91849190d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAgentService.js.map","hasSourceURL":false,"isModule":false,"length":896,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"413","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js","startLine":0,"startColumn":0,"endLine":166,"endColumn":3,"executionContextId":1,"hash":"01ad27985fa6cd9420b2ed241b997d890e7925e9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"spdlogService.js.map","hasSourceURL":false,"isModule":false,"length":6516,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"414","url":"file:///Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"33612bd53aa8c1101c08e13ac7e24b3f359d3971","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sign.js.map","hasSourceURL":false,"isModule":false,"length":849,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"415","url":"file:///Users/roblou/code/vscode/out/vs/base/common/resources.js","startLine":0,"startColumn":0,"endLine":337,"endColumn":3,"executionContextId":1,"hash":"03209f0891b4afad5321e1691d69b66c7d7515d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resources.js.map","hasSourceURL":false,"isModule":false,"length":15406,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"416","url":"file:///Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js","startLine":0,"startColumn":0,"endLine":29,"endColumn":3,"executionContextId":1,"hash":"0d5a9972a6959f5c25dc0e20219ec3d8029ba6c4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"signService.js.map","hasSourceURL":false,"isModule":false,"length":1186,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"417","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":3,"executionContextId":1,"hash":"1d69f91f7dc8d3d77a2c6fcf2fc6079d1e085d81","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAgentFileSystemChannel.js.map","hasSourceURL":false,"isModule":false,"length":7473,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"418","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"1ef285f51eb91564574fa6b093a52d7278d4e0c7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationCache.js.map","hasSourceURL":false,"isModule":false,"length":2954,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"419","url":"file:///Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":3,"executionContextId":1,"hash":"01a05b929c51379d08f30cc0c8e7f98047a226bc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resourceIdentityService.js.map","hasSourceURL":false,"isModule":false,"length":1204,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101299,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"420","url":"file:///Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"30185b73775cd4bc1cf3d7bdb89b0fd3635fbfe1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resourceIdentityServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":2829,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"421","url":"file:///Users/roblou/code/vscode/out/vs/base/common/buffer.js","startLine":0,"startColumn":0,"endLine":191,"endColumn":3,"executionContextId":1,"hash":"0d0549364a5bf92d739914aa9061358058aca4ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"buffer.js.map","hasSourceURL":false,"isModule":false,"length":8036,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"422","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js","startLine":0,"startColumn":0,"endLine":120,"endColumn":3,"executionContextId":1,"hash":"0eb409cc5589c4ba77b26c4e3e7b65a300c3de0e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileUserDataProvider.js.map","hasSourceURL":false,"isModule":false,"length":6548,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"423","url":"file:///Users/roblou/code/vscode/out/vs/base/node/pfs.js","startLine":0,"startColumn":0,"endLine":456,"endColumn":3,"executionContextId":1,"hash":"3263fe7e82a9656255a5a137038f245003022006","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pfs.js.map","hasSourceURL":false,"isModule":false,"length":19160,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"424","url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","startLine":0,"startColumn":0,"endLine":1366,"endColumn":3,"executionContextId":1,"hash":"3e0fc7b577b130b5703b99a451339c4270cac7cf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"path.js.map","hasSourceURL":false,"isModule":false,"length":58419,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"425","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js","startLine":0,"startColumn":0,"endLine":377,"endColumn":3,"executionContextId":1,"hash":"3245399d0afecc7672e0444fa79b53b158599cc9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileService.js.map","hasSourceURL":false,"isModule":false,"length":23404,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"426","url":"file:///Users/roblou/code/vscode/out/vs/base/node/encoding.js","startLine":0,"startColumn":0,"endLine":274,"endColumn":3,"executionContextId":1,"hash":"13f46cdb70ebbd426dbd8bae9d1d41f85e70efda","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"encoding.js.map","hasSourceURL":false,"isModule":false,"length":13455,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"427","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js","startLine":0,"startColumn":0,"endLine":375,"endColumn":3,"executionContextId":1,"hash":"148e78b2139775e27d11968595d0d2656e1b984b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textfiles.js.map","hasSourceURL":false,"isModule":false,"length":13543,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"428","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"2db9bac25b8c5f2a7acaf45075b7bd571359c193","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resolverService.js.map","hasSourceURL":false,"isModule":false,"length":794,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"429","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js","startLine":0,"startColumn":0,"endLine":2663,"endColumn":3,"executionContextId":1,"hash":"026bd54281a52d7d8147887517c3bce46b768231","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textModel.js.map","hasSourceURL":false,"isModule":false,"length":144536,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"430","url":"file:///Users/roblou/code/vscode/out/vs/base/node/stream.js","startLine":0,"startColumn":0,"endLine":102,"endColumn":3,"executionContextId":1,"hash":"0815e37c8e95a1c86536ab879f65bd796fbcfd94","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"stream.js.map","hasSourceURL":false,"isModule":false,"length":4483,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"431","url":"file:///Users/roblou/code/vscode/out/vs/base/common/labels.js","startLine":0,"startColumn":0,"endLine":326,"endColumn":3,"executionContextId":1,"hash":"1eaa5a116d4cb66d3156d977a2bc929c7c617b69","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"labels.js.map","hasSourceURL":false,"isModule":false,"length":16397,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"432","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1c96003f5f114ef303906e0501835a2914904f97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeEditorService.js.map","hasSourceURL":false,"isModule":false,"length":799,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"433","url":"file:///Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"191e163d64a86fb93e55041bb750dfad4be3ab21","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sharedProcessService.js.map","hasSourceURL":false,"isModule":false,"length":811,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"434","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"2b001bc800397cbb221b7734261dcb0e1da29e84","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dialogService.js.map","hasSourceURL":false,"isModule":false,"length":8105,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101300,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"435","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"3aa67fc43645fc635594a78144d043557f977fe6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pathService.js.map","hasSourceURL":false,"isModule":false,"length":4342,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"436","url":"file:///Users/roblou/code/vscode/out/vs/base/common/date.js","startLine":0,"startColumn":0,"endLine":130,"endColumn":3,"executionContextId":1,"hash":"3d7e25fa4743a4f75ae99bb85cee99926c5cdbb3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"date.js.map","hasSourceURL":false,"isModule":false,"length":5961,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"437","url":"file:///Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"32526d608ca67647063884c498b9436d491f2e47","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dialogIpc.js.map","hasSourceURL":false,"isModule":false,"length":2337,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","startLine":0,"startColumn":0,"endLine":702,"endColumn":3,"executionContextId":1,"hash":"3a79dbd22e2f946378022b1f16df792437d53fe8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"event.js.map","hasSourceURL":false,"isModule":false,"length":27662,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"439","url":"file:///Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"360a387b0d22f7b16281531399cd0aff6d9cd588","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"layoutService.js.map","hasSourceURL":false,"isModule":false,"length":783,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"440","url":"file:///Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"27147b641e9b290f778fc9be4f6d2d196bda4024","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"clipboardService.js.map","hasSourceURL":false,"isModule":false,"length":795,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"441","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js","startLine":0,"startColumn":0,"endLine":193,"endColumn":3,"executionContextId":1,"hash":"3762e1ea7ad3c0d70829102f79c8922b65ec4fb8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keymapInfo.js.map","hasSourceURL":false,"isModule":false,"length":7553,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"442","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"2e96fa35220696f1471628962e7a29176b16beb1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keyboardMapper.js.map","hasSourceURL":false,"isModule":false,"length":1542,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"443","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js","startLine":0,"startColumn":0,"endLine":589,"endColumn":3,"executionContextId":1,"hash":"023af634672c00e82be1884a45d227b17b9f92b7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"windowsKeyboardMapper.js.map","hasSourceURL":false,"isModule":false,"length":27677,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"444","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js","startLine":0,"startColumn":0,"endLine":107,"endColumn":3,"executionContextId":1,"hash":"268b5f35225c0da55bd9444cc768e46709224bb7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"macLinuxFallbackKeyboardMapper.js.map","hasSourceURL":false,"isModule":false,"length":6097,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"445","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":3,"executionContextId":1,"hash":"2cbc1b14276220d2659a4e609c82ad391f492fca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybinding.js.map","hasSourceURL":false,"isModule":false,"length":1104,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"446","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js","startLine":0,"startColumn":0,"endLine":351,"endColumn":3,"executionContextId":1,"hash":"39c272809355f1cf04f7625aab0cb54b547141a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputChannelModel.js.map","hasSourceURL":false,"isModule":false,"length":16403,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"447","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js","startLine":0,"startColumn":0,"endLine":962,"endColumn":3,"executionContextId":1,"hash":"26081d190dbda7e57a568eda48fd14d141fd09bf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"macLinuxKeyboardMapper.js.map","hasSourceURL":false,"isModule":false,"length":51447,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"448","url":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js","startLine":0,"startColumn":0,"endLine":27,"endColumn":3,"executionContextId":1,"hash":"0f66785f5625afc908f811830f83f9364bfca71f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteHosts.js.map","hasSourceURL":false,"isModule":false,"length":1318,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"449","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"2bc65c1d52665cc74cd00998a42ebb2c163fed67","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagement.js.map","hasSourceURL":false,"isModule":false,"length":2868,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"450","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":3,"executionContextId":1,"hash":"0222c1118310a0246887407dbc1ad63d29fa96e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputAppender.js.map","hasSourceURL":false,"isModule":false,"length":781,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"451","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"39ace0989fc8b5763645983dbdde9a1b4faaffc4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteExtensionManagementIpc.js.map","hasSourceURL":false,"isModule":false,"length":8074,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"452","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":3,"executionContextId":1,"hash":"36813ba41a32f44809c8b3cf3a540132502209d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagementIpc.js.map","hasSourceURL":false,"isModule":false,"length":7810,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"453","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js","startLine":0,"startColumn":0,"endLine":216,"endColumn":3,"executionContextId":1,"hash":"3ea00ffd0a8d59ad198c985f261689ba5ed7dfc7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteExtensionHostClient.js.map","hasSourceURL":false,"isModule":false,"length":14992,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"454","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js","startLine":0,"startColumn":0,"endLine":299,"endColumn":3,"executionContextId":1,"hash":"0d60f7324cfa2e745d656919a83956cb812f1378","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cachedExtensionScanner.js.map","hasSourceURL":false,"isModule":false,"length":18090,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","startLine":0,"startColumn":0,"endLine":395,"endColumn":3,"executionContextId":1,"hash":"33d9fc7c75513e4c2511c0cc7dd2aa837ceaeb15","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractExtensionService.js.map","hasSourceURL":false,"isModule":false,"length":24269,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"456","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js","startLine":0,"startColumn":0,"endLine":460,"endColumn":3,"executionContextId":1,"hash":"3c901db484c7d15069d1bba3a6e9fd8b6b01f8ca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHost.js.map","hasSourceURL":false,"isModule":false,"length":30138,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101301,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"457","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js","startLine":0,"startColumn":0,"endLine":78,"endColumn":3,"executionContextId":1,"hash":"0b782c420f73406b23ca8a5d12601f714c693058","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensions.js.map","hasSourceURL":false,"isModule":false,"length":3966,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"458","url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","startLine":0,"startColumn":0,"endLine":534,"endColumn":3,"executionContextId":1,"hash":"365c95c42026d91253c79cbf0c1618ec61baaa6a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"arrays.js.map","hasSourceURL":false,"isModule":false,"length":18562,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"459","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js","startLine":0,"startColumn":0,"endLine":114,"endColumn":3,"executionContextId":1,"hash":"38e629ec0f9f554e079de01726f61f4b5f49f9f4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsUtil.js.map","hasSourceURL":false,"isModule":false,"length":6336,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"460","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js","startLine":0,"startColumn":0,"endLine":175,"endColumn":3,"executionContextId":1,"hash":"0a158cf4247394c13a89a70f188640d42d1f4b99","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryUtils.js.map","hasSourceURL":false,"isModule":false,"length":7438,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"461","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js","startLine":0,"startColumn":0,"endLine":167,"endColumn":3,"executionContextId":1,"hash":"1cb4a4faaadd34923d77abb083fee05272084ada","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryService.js.map","hasSourceURL":false,"isModule":false,"length":9173,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"462","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":3,"executionContextId":1,"hash":"23560f906d82e63871aed6cb348301405e7e66a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryIpc.js.map","hasSourceURL":false,"isModule":false,"length":1610,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"463","url":"file:///Users/roblou/code/vscode/out/vs/base/common/actions.js","startLine":0,"startColumn":0,"endLine":139,"endColumn":3,"executionContextId":1,"hash":"082edd7b57b906d253a3a6c9be328a6e6b3e4190","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"actions.js.map","hasSourceURL":false,"isModule":false,"length":4956,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101303,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"464","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js","startLine":0,"startColumn":0,"endLine":49,"endColumn":3,"executionContextId":1,"hash":"31a54239266cf6222d3d1b313719365a0b3fe4a1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionPoints.js.map","hasSourceURL":false,"isModule":false,"length":1998,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"465","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js","startLine":0,"startColumn":0,"endLine":351,"endColumn":3,"executionContextId":1,"hash":"17f92e12930a4994666e09429772205752aa6504","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHostProcessManager.js.map","hasSourceURL":false,"isModule":false,"length":17969,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"466","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"3a58773a8b8213c217ac019c97a49cbb0522d63c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbenchCommonProperties.js.map","hasSourceURL":false,"isModule":false,"length":2983,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"467","url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":3,"executionContextId":1,"hash":"07b99ece764488b66b21e3153828b21d40975a24","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"functional.js.map","hasSourceURL":false,"isModule":false,"length":972,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"468","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js","startLine":0,"startColumn":0,"endLine":710,"endColumn":3,"executionContextId":1,"hash":"263dd47f208401f6464a56b18a2db67c17e87184","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"actionbar.js.map","hasSourceURL":false,"isModule":false,"length":29252,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.31","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.387488,"wallTime":1588425101.265977,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"469","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":3,"executionContextId":1,"hash":"02b0abf1024cfd1f5428f48b3d4849ce4de13a62","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextmenu.js.map","hasSourceURL":false,"isModule":false,"length":919,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"470","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"3a1cba284312b55e39a4ec2f8529dc8a3b935d63","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextmenu.js.map","hasSourceURL":false,"isModule":false,"length":2550,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"471","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"200028d812d94e70215f98005ba17cd920ef477a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextMenuService.js.map","hasSourceURL":false,"isModule":false,"length":3155,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"472","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"13c0f9e2636c46bb109d2daaad58b7eb630b2104","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationResolver.js.map","hasSourceURL":false,"isModule":false,"length":836,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"473","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js","startLine":0,"startColumn":0,"endLine":22,"endColumn":3,"executionContextId":1,"hash":"02a5b36242abffee8176e890bfe11f0a2c021cff","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInput.js.map","hasSourceURL":false,"isModule":false,"length":1381,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"474","url":"file:///Users/roblou/code/vscode/out/vs/platform/request/common/request.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"39296f2442003f413db96acf7c0bad4654a89cff","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"request.js.map","hasSourceURL":false,"isModule":false,"length":4390,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"475","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js","startLine":0,"startColumn":0,"endLine":330,"endColumn":3,"executionContextId":1,"hash":"1d9974ffa588adcd5c10c84079facaab21b8e30f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationResolverService.js.map","hasSourceURL":false,"isModule":false,"length":20497,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"476","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js","startLine":0,"startColumn":0,"endLine":109,"endColumn":3,"executionContextId":1,"hash":"3b7c1b296681eefe499dd39d613dc82f165410a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionTipsService.js.map","hasSourceURL":false,"isModule":false,"length":6354,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"477","url":"file:///Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"06046ca0291dfdc21dd15e3e75953e1c56e5fbdf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"accessibility.js.map","hasSourceURL":false,"isModule":false,"length":1589,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"478","url":"file:///Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js","startLine":0,"startColumn":0,"endLine":66,"endColumn":3,"executionContextId":1,"hash":"338676024313c22226b87b897f1e966a48a69d34","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"accessibilityService.js.map","hasSourceURL":false,"isModule":false,"length":4124,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"479","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js","startLine":0,"startColumn":0,"endLine":29,"endColumn":3,"executionContextId":1,"hash":"0a9add762e33bf821bcca80c502f772251e0fc0b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonEditing.js.map","hasSourceURL":false,"isModule":false,"length":1639,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"480","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uuid.js","startLine":0,"startColumn":0,"endLine":61,"endColumn":3,"executionContextId":1,"hash":"065d480a56c3ae361ae263ac59c35c5505584b31","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"uuid.js.map","hasSourceURL":false,"isModule":false,"length":2399,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"481","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/contributions.js","startLine":0,"startColumn":0,"endLine":91,"endColumn":3,"executionContextId":1,"hash":"1e4c23eaa8e2fbda1471b8fa7340634e80c0231c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contributions.js.map","hasSourceURL":false,"isModule":false,"length":4917,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"482","url":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":3,"executionContextId":1,"hash":"3131deb33d455e03566f61e8046c31723e7bcfe9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"urlIpc.js.map","hasSourceURL":false,"isModule":false,"length":2674,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"483","url":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/url.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"06be9b006381014a0ae487da203b3b8815278870","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"url.js.map","hasSourceURL":false,"isModule":false,"length":764,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"484","url":"file:///Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":3,"executionContextId":1,"hash":"38141228984e0016418ce8382a2579940a296c49","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"urlService.js.map","hasSourceURL":false,"isModule":false,"length":1342,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"485","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js","startLine":0,"startColumn":0,"endLine":81,"endColumn":3,"executionContextId":1,"hash":"01980286257efa71632a324144cfa6c2491acdf6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.js.map","hasSourceURL":false,"isModule":false,"length":3900,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101304,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"486","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js","startLine":0,"startColumn":0,"endLine":136,"endColumn":3,"executionContextId":1,"hash":"110805e97da6c07820fc062052b9ea6352d564f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractRemoteAgentService.js.map","hasSourceURL":false,"isModule":false,"length":8580,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"487","url":"file:///Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"0bb360b78528ca6344a4f26c46aaec7761533d56","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"nodeSocketFactory.js.map","hasSourceURL":false,"isModule":false,"length":2152,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"488","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js","startLine":0,"startColumn":0,"endLine":213,"endColumn":3,"executionContextId":1,"hash":"24a41f54362e8dc973396f93988b7e961b6fc7ad","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagementService.js.map","hasSourceURL":false,"isModule":false,"length":16852,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.5","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.402462,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/media/titlebarpart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.5","timestamp":547783.402545,"dataLength":3567,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.5","timestamp":547783.402622,"encodedDataLength":3567,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.6","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.404334,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/media/actions.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.6","timestamp":547783.404389,"dataLength":1504,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.6","timestamp":547783.404448,"encodedDataLength":1504,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.7","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.404824,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/media/sidebarpart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.7","timestamp":547783.404887,"dataLength":1645,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.7","timestamp":547783.404963,"encodedDataLength":1645,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.8","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.4054,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/media/activitybarpart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.8","timestamp":547783.40545,"dataLength":2000,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.8","timestamp":547783.405527,"encodedDataLength":2000,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.9","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.40607,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/media/views.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.9","timestamp":547783.406123,"dataLength":4911,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101305,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.9","timestamp":547783.406227,"encodedDataLength":4911,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.10","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.406874,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/media/panelpart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.10","timestamp":547783.406927,"dataLength":6148,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.10","timestamp":547783.406985,"encodedDataLength":6148,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.11","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.407445,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/media/statusbarpart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.11","timestamp":547783.407498,"dataLength":3388,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.11","timestamp":547783.40755,"encodedDataLength":3388,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.12","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.407994,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/media/progressService.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.12","timestamp":547783.408045,"dataLength":1638,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.12","timestamp":547783.408096,"encodedDataLength":1638,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.13","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.408423,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/preferences.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.13","timestamp":547783.408466,"dataLength":5470,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.13","timestamp":547783.408516,"encodedDataLength":5470,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.14","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.408923,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/media/explorerviewlet.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.14","timestamp":547783.408967,"dataLength":2908,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.14","timestamp":547783.409013,"encodedDataLength":2908,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.15","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.409383,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/media/searchview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.15","timestamp":547783.409429,"dataLength":8498,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.15","timestamp":547783.409486,"encodedDataLength":8498,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.16","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.40999,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/media/scmViewlet.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101306,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.16","timestamp":547783.410034,"dataLength":5727,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101307,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.16","timestamp":547783.410096,"encodedDataLength":5727,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.17","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.41052,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debug.contribution.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.17","timestamp":547783.410566,"dataLength":3109,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.17","timestamp":547783.410618,"encodedDataLength":3109,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.18","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.411035,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debugHover.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.18","timestamp":547783.411082,"dataLength":1910,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.18","timestamp":547783.411131,"encodedDataLength":1910,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.19","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.411643,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/repl.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.19","timestamp":547783.411688,"dataLength":3168,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.19","timestamp":547783.411738,"encodedDataLength":3168,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.20","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.412235,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debugViewlet.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.20","timestamp":547783.412314,"dataLength":6971,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.20","timestamp":547783.412377,"encodedDataLength":6971,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.21","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.412874,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/media/output.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.21","timestamp":547783.412928,"dataLength":1424,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.21","timestamp":547783.412975,"encodedDataLength":1424,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.22","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.413303,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.22","timestamp":547783.413347,"dataLength":4925,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.22","timestamp":547783.413397,"encodedDataLength":4925,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.23","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.41381,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/scrollbar.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.23","timestamp":547783.413854,"dataLength":1711,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.23","timestamp":547783.4139,"encodedDataLength":1711,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.24","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.414258,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/terminal.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.24","timestamp":547783.414302,"dataLength":6802,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.24","timestamp":547783.414357,"encodedDataLength":6802,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.25","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.4148,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/widgets.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.25","timestamp":547783.414844,"dataLength":1739,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.25","timestamp":547783.414892,"encodedDataLength":1739,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.26","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.415183,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/media/xterm.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.26","timestamp":547783.41523,"dataLength":4174,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.26","timestamp":547783.415283,"encodedDataLength":4174,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101308,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.27","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.415619,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/media/remoteViewlet.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.27","timestamp":547783.415662,"dataLength":1710,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.27","timestamp":547783.41571,"encodedDataLength":1710,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.28","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.416072,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.28","timestamp":547783.416116,"dataLength":2285,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.28","timestamp":547783.416166,"encodedDataLength":2285,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.29","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.416496,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.29","timestamp":547783.416537,"dataLength":4132,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.29","timestamp":547783.416585,"encodedDataLength":4132,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.30","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.417011,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/media/actions.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.30","timestamp":547783.417054,"dataLength":591,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.30","timestamp":547783.417125,"encodedDataLength":591,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.31","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.417516,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.31","timestamp":547783.417562,"dataLength":2322,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101309,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.31","timestamp":547783.417619,"encodedDataLength":2322,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101309,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101311,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/async.js"},"level":0} {"tag":"dap.send","timestamp":1588425101311,"metadata":{"connectionId":1,"message":{"seq":322,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js","path":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js","sourceReference":627843853}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101312,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/label/common/label.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/label/common/label.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101313,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js"},"level":0} {"tag":"dap.send","timestamp":1588425101313,"metadata":{"connectionId":1,"message":{"seq":323,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/async.js","path":"/Users/roblou/code/vscode/out/vs/base/common/async.js","sourceReference":1320835751}}}},"level":0} {"tag":"dap.send","timestamp":1588425101313,"metadata":{"connectionId":1,"message":{"seq":324,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/label/common/label.js","path":"/Users/roblou/code/vscode/out/vs/platform/label/common/label.js","sourceReference":2118026491}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101314,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101314,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/instantiation/common/instantiation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiation.ts","sourceMapSources":["vs/platform/instantiation/common/instantiation.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101314,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js"},"level":0} {"tag":"dap.send","timestamp":1588425101314,"metadata":{"connectionId":1,"message":{"seq":325,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js","path":"/Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js","sourceReference":1919420374}}}},"level":0} {"tag":"dap.send","timestamp":1588425101315,"metadata":{"connectionId":1,"message":{"seq":326,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiation.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiation.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101315,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101315,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/async.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/async.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/async.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/async.ts","sourceMapSources":["vs/base/common/async.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101315,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/browser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/browser.js"},"level":0} {"tag":"dap.send","timestamp":1588425101316,"metadata":{"connectionId":1,"message":{"seq":327,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js","path":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js","sourceReference":1751968348}}}},"level":0} {"tag":"dap.send","timestamp":1588425101316,"metadata":{"connectionId":1,"message":{"seq":328,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/async.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/async.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101317,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101317,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/label/common/label.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/label/common/label.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/label/common/label.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/label/common/label.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/label/common/label.ts","sourceMapSources":["vs/platform/label/common/label.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101317,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/dom.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/dom.js"},"level":0} {"tag":"dap.send","timestamp":1588425101318,"metadata":{"connectionId":1,"message":{"seq":329,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/browser.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/browser.js","sourceReference":512435755}}}},"level":0} {"tag":"dap.send","timestamp":1588425101320,"metadata":{"connectionId":1,"message":{"seq":330,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/label/common/label.ts","path":"/Users/roblou/code/vscode/src/vs/platform/label/common/label.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101320,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101320,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/storage/common/storage.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/storage/common/storage.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/storage/common/storage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/storage/common/storage.ts","sourceMapSources":["vs/platform/storage/common/storage.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101320,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js"},"level":0} {"tag":"dap.send","timestamp":1588425101320,"metadata":{"connectionId":1,"message":{"seq":331,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/dom.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/dom.js","sourceReference":2136519617}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101321,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101321,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/configuration/common/configuration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configuration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configuration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/configuration/common/configuration.ts","sourceMapSources":["vs/platform/configuration/common/configuration.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101321,"metadata":{"connectionId":1,"message":{"seq":332,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/storage/common/storage.ts","path":"/Users/roblou/code/vscode/src/vs/platform/storage/common/storage.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101321,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101322,"metadata":{"connectionId":1,"message":{"seq":333,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configuration.ts","path":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configuration.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101322,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101322,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/browser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/browser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/browser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/browser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/browser.ts","sourceMapSources":["vs/base/browser/browser.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101323,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js"},"level":0} {"tag":"dap.send","timestamp":1588425101323,"metadata":{"connectionId":1,"message":{"seq":334,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js","sourceReference":182744510}}}},"level":0} {"tag":"dap.send","timestamp":1588425101323,"metadata":{"connectionId":1,"message":{"seq":335,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js","sourceReference":2031957911}}}},"level":0} {"tag":"dap.send","timestamp":1588425101324,"metadata":{"connectionId":1,"message":{"seq":336,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/browser.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/browser.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101324,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101324,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/dom.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/dom.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/dom.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/dom.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/dom.ts","sourceMapSources":["vs/base/browser/dom.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101324,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/platform.js"},"level":0} {"tag":"dap.send","timestamp":1588425101324,"metadata":{"connectionId":1,"message":{"seq":337,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js","sourceReference":1096471705}}}},"level":0} {"tag":"dap.send","timestamp":1588425101325,"metadata":{"connectionId":1,"message":{"seq":338,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/dom.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/dom.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101325,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101326,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextkey/common/contextkey.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkey.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkey.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkey.ts","sourceMapSources":["vs/platform/contextkey/common/contextkey.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101326,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425101326,"metadata":{"connectionId":1,"message":{"seq":339,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/platform.js","path":"/Users/roblou/code/vscode/out/vs/base/common/platform.js","sourceReference":2137697889}}}},"level":0} {"tag":"dap.send","timestamp":1588425101327,"metadata":{"connectionId":1,"message":{"seq":340,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkey.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkey.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101327,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101327,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/environment/common/environmentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/common/environmentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/environment/common/environmentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/environment/common/environmentService.ts","sourceMapSources":["vs/workbench/services/environment/common/environmentService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101327,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101329,"metadata":{"connectionId":1,"message":{"seq":341,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/environment/common/environmentService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/environment/common/environmentService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101329,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101329,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/host/browser/host.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/host/browser/host.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/host/browser/host.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/host/browser/host.ts","sourceMapSources":["vs/workbench/services/host/browser/host.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101329,"metadata":{"connectionId":1,"message":{"seq":342,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js","sourceReference":875211594}}}},"level":0} {"tag":"dap.send","timestamp":1588425101329,"metadata":{"connectionId":1,"message":{"seq":343,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","path":"/Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","sourceReference":1569101378}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101329,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101330,"metadata":{"connectionId":1,"message":{"seq":344,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/host/browser/host.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/host/browser/host.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101330,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101330,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/platform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/platform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/platform.ts","sourceMapSources":["vs/base/common/platform.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101331,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js"},"level":0} {"tag":"dap.send","timestamp":1588425101331,"metadata":{"connectionId":1,"message":{"seq":345,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101331,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101331,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/titlebar/titlebarPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/titlebarPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts","sourceMapSources":["vs/workbench/browser/parts/titlebar/titlebarPart.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101331,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/product/common/productService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/product/common/productService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101332,"metadata":{"connectionId":1,"message":{"seq":346,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js","path":"/Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js","sourceReference":1074615906}}}},"level":0} {"tag":"dap.send","timestamp":1588425101332,"metadata":{"connectionId":1,"message":{"seq":347,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js","path":"/Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js","sourceReference":1243186172}}}},"level":0} {"tag":"dap.send","timestamp":1588425101332,"metadata":{"connectionId":1,"message":{"seq":348,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101333,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101333,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/actions/common/actions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceMapSources":["vs/platform/actions/common/actions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101333,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js"},"level":0} {"tag":"dap.send","timestamp":1588425101334,"metadata":{"connectionId":1,"message":{"seq":349,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/product/common/productService.js","path":"/Users/roblou/code/vscode/out/vs/platform/product/common/productService.js","sourceReference":1172506962}}}},"level":0} {"tag":"dap.send","timestamp":1588425101334,"metadata":{"connectionId":1,"message":{"seq":350,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js","path":"/Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js","sourceReference":1456037614}}}},"level":0} {"tag":"dap.send","timestamp":1588425101335,"metadata":{"connectionId":1,"message":{"seq":351,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101335,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101335,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101335,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/theme/common/themeService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/themeService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/theme/common/themeService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/theme/common/themeService.ts","sourceMapSources":["vs/platform/theme/common/themeService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101336,"metadata":{"connectionId":1,"message":{"seq":352,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/theme/common/themeService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/theme/common/themeService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101336,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101336,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/workspace/common/workspace.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/workspace/common/workspace.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/workspace/common/workspace.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/workspace/common/workspace.ts","sourceMapSources":["vs/platform/workspace/common/workspace.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101336,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101336,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/product/common/productService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/product/common/productService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/product/common/productService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/product/common/productService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/product/common/productService.ts","sourceMapSources":["vs/platform/product/common/productService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101336,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js"},"level":0} {"tag":"dap.send","timestamp":1588425101337,"metadata":{"connectionId":1,"message":{"seq":353,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js","path":"/Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js","sourceReference":2097222715}}}},"level":0} {"tag":"dap.send","timestamp":1588425101337,"metadata":{"connectionId":1,"message":{"seq":354,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/workspace/common/workspace.ts","path":"/Users/roblou/code/vscode/src/vs/platform/workspace/common/workspace.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101337,"metadata":{"connectionId":1,"message":{"seq":355,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/product/common/productService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/product/common/productService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101337,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101337,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/electron/node/electron.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/electron/node/electron.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/electron/node/electron.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/electron/node/electron.ts","sourceMapSources":["vs/platform/electron/node/electron.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101338,"metadata":{"connectionId":1,"message":{"seq":356,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js","sourceReference":1869100739}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101338,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101339,"metadata":{"connectionId":1,"message":{"seq":357,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/electron/node/electron.ts","path":"/Users/roblou/code/vscode/src/vs/platform/electron/node/electron.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101339,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101340,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101340,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/windows/common/windows.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/windows/common/windows.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/windows/common/windows.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/windows/common/windows.ts","sourceMapSources":["vs/platform/windows/common/windows.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101340,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js"},"level":0} {"tag":"dap.send","timestamp":1588425101344,"metadata":{"connectionId":1,"message":{"seq":358,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/windows/common/windows.ts","path":"/Users/roblou/code/vscode/src/vs/platform/windows/common/windows.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101344,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101344,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextview/browser/contextView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextView.ts","sourceMapSources":["vs/platform/contextview/browser/contextView.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101344,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101345,"metadata":{"connectionId":1,"message":{"seq":359,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js","sourceReference":1850478800}}}},"level":0} {"tag":"dap.send","timestamp":1588425101345,"metadata":{"connectionId":1,"message":{"seq":360,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js","sourceReference":1306745042}}}},"level":0} {"tag":"dap.send","timestamp":1588425101345,"metadata":{"connectionId":1,"message":{"seq":361,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js","sourceReference":458789052}}}},"level":0} {"tag":"dap.send","timestamp":1588425101345,"metadata":{"connectionId":1,"message":{"seq":362,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextView.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextView.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101346,"metadata":{"connectionId":1,"message":{"seq":363,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js","sourceReference":341555283}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101346,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101348,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101348,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/extensionGalleryService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionGalleryService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.ts","sourceMapSources":["vs/platform/extensionManagement/common/extensionGalleryService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101348,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101348,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/editor/common/editorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorService.ts","sourceMapSources":["vs/workbench/services/editor/common/editorService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101349,"metadata":{"connectionId":1,"message":{"seq":364,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101349,"metadata":{"connectionId":1,"message":{"seq":365,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101351,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101351,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/extensionManagement.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagement.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagement.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagement.ts","sourceMapSources":["vs/platform/extensionManagement/common/extensionManagement.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101351,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/codicons.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/codicons.js"},"level":0} {"tag":"dap.send","timestamp":1588425101351,"metadata":{"connectionId":1,"message":{"seq":366,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js","sourceReference":1697453889}}}},"level":0} {"tag":"dap.send","timestamp":1588425101352,"metadata":{"connectionId":1,"message":{"seq":367,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagement.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagement.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101352,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101352,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/layout/browser/layoutService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/layout/browser/layoutService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/layout/browser/layoutService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/layout/browser/layoutService.ts","sourceMapSources":["vs/workbench/services/layout/browser/layoutService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101352,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101353,"metadata":{"connectionId":1,"message":{"seq":368,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/layout/browser/layoutService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/layout/browser/layoutService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101353,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101353,"metadata":{"connectionId":1,"message":{"seq":369,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/codicons.js","path":"/Users/roblou/code/vscode/out/vs/base/common/codicons.js","sourceReference":384817161}}}},"level":0} {"tag":"dap.send","timestamp":1588425101354,"metadata":{"connectionId":1,"message":{"seq":370,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js","sourceReference":1014912115}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101365,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101365,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/extensionEnablementService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionEnablementService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService.ts","sourceMapSources":["vs/platform/extensionManagement/common/extensionEnablementService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101366,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101368,"metadata":{"connectionId":1,"message":{"seq":371,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101368,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101368,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/codicons.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/codicons.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/codicons.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/codicons.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/codicons.ts","sourceMapSources":["vs/base/common/codicons.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101369,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101369,"metadata":{"connectionId":1,"message":{"seq":372,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","path":"/Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","sourceReference":8110819}}}},"level":0} {"tag":"dap.send","timestamp":1588425101369,"metadata":{"connectionId":1,"message":{"seq":373,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js","sourceReference":576447834}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101369,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"489","url":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js","startLine":0,"startColumn":0,"endLine":448,"endColumn":3,"executionContextId":1,"hash":"325adfd73a37ec6502b2aa1e450030c4412db1fc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAgentConnection.js.map","hasSourceURL":false,"isModule":false,"length":24569,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101369,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"490","url":"file:///Users/roblou/code/vscode/out/vs/base/node/ports.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"2ba60f7513261dd231e934f4769cb2055b397f00","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ports.js.map","hasSourceURL":false,"isModule":false,"length":4725,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101369,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"491","url":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"096d7110578aebcf192b3f0b36d6902271333724","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storageKeys.js.map","hasSourceURL":false,"isModule":false,"length":1808,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101369,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"492","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js","startLine":0,"startColumn":0,"endLine":343,"endColumn":3,"executionContextId":1,"hash":"1b64716a210f4ec850328ff2163bcc8102c41937","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backupFileService.js.map","hasSourceURL":false,"isModule":false,"length":17818,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"493","url":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js","startLine":0,"startColumn":0,"endLine":136,"endColumn":3,"executionContextId":1,"hash":"337af76216b72ced3b0f430d52a88a707aaa9403","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncIpc.js.map","hasSourceURL":false,"isModule":false,"length":6822,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"494","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1df0a5fe58a2d78a72dc9a6281ef96e43daae6ee","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backup.js.map","hasSourceURL":false,"isModule":false,"length":788,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"495","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js","startLine":0,"startColumn":0,"endLine":149,"endColumn":3,"executionContextId":1,"hash":"3532dae9390561513fcf96fa177d677b2cc7cb9b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tunnelService.js.map","hasSourceURL":false,"isModule":false,"length":7582,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"496","url":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js","startLine":0,"startColumn":0,"endLine":25,"endColumn":3,"executionContextId":1,"hash":"3a791df109a204275caa64a5872a34366f700302","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tunnel.js.map","hasSourceURL":false,"isModule":false,"length":1373,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"497","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"11ffdeb43a72841b5c3bd939754d03ff217c6f18","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceEditing.js.map","hasSourceURL":false,"isModule":false,"length":816,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"498","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js","startLine":0,"startColumn":0,"endLine":14,"endColumn":3,"executionContextId":1,"hash":"237ce8920455535966c25258cae861a012a92671","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backup.js.map","hasSourceURL":false,"isModule":false,"length":1055,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"499","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errorMessage.js","startLine":0,"startColumn":0,"endLine":68,"endColumn":3,"executionContextId":1,"hash":"113e014a7023ec047319d86c498f78e101405d11","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"errorMessage.js.map","hasSourceURL":false,"isModule":false,"length":3319,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"500","url":"file:///Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"2c9582137cc7aa0f02937e61b5b0c4303d7db809","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"authentication.js.map","hasSourceURL":false,"isModule":false,"length":1915,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"501","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js","startLine":0,"startColumn":0,"endLine":277,"endColumn":3,"executionContextId":1,"hash":"27a8a6bb6c28c6121df1eeb9977e149645c900e0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractWorkspaceEditingService.js.map","hasSourceURL":false,"isModule":false,"length":17281,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"502","url":"file:///Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js","startLine":0,"startColumn":0,"endLine":27,"endColumn":3,"executionContextId":1,"hash":"30a85d8268d8482370a365070c98abeb16d18815","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menubar.js.map","hasSourceURL":false,"isModule":false,"length":1699,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","startLine":0,"startColumn":0,"endLine":271,"endColumn":3,"executionContextId":1,"hash":"385fd0ba279165732bdd569c005934491ee6b5fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.net.js.map","hasSourceURL":false,"isModule":false,"length":11750,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"504","url":"file:///Users/roblou/code/vscode/out/vs/platform/update/common/update.js","startLine":0,"startColumn":0,"endLine":55,"endColumn":3,"executionContextId":1,"hash":"0b45c11d67ebc93a2f10349b5dc24f1d467d326e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"update.js.map","hasSourceURL":false,"isModule":false,"length":2933,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"505","url":"file:///Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"167d79e169d0773b6168d78810c7463b16968d20","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"localizations.js.map","hasSourceURL":false,"isModule":false,"length":2016,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"506","url":"file:///Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"112c84466fbff5a33a713b2a60fb1b9560839f60","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"requestService.js.map","hasSourceURL":false,"isModule":false,"length":2680,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"507","url":"file:///Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"11c05d8045190570179f6976618527d70243551a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lifecycleService.js.map","hasSourceURL":false,"isModule":false,"length":3921,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"508","url":"file:///Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":3,"executionContextId":1,"hash":"3cd69da3a8eeb7a87189932f4086d82661093575","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"issue.js.map","hasSourceURL":false,"isModule":false,"length":1182,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"509","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":3,"executionContextId":1,"hash":"298b8b652a1e29a04af8de734cc2f2af01a6fd9d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"localizationsActions.js.map","hasSourceURL":false,"isModule":false,"length":6738,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"510","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"2d7f68fc9e4582a32b289019909bdb817256385c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensions.js.map","hasSourceURL":false,"isModule":false,"length":4728,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"511","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js","startLine":0,"startColumn":0,"endLine":387,"endColumn":3,"executionContextId":1,"hash":"0fb76a676c1b46245620962c256dfa0246fee3a0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsRegistry.js.map","hasSourceURL":false,"isModule":false,"length":21490,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"512","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"07ed9f3680805b7c6aa97b1faabe582b58697f38","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewlet.js.map","hasSourceURL":false,"isModule":false,"length":780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"513","url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","startLine":0,"startColumn":0,"endLine":116,"endColumn":3,"executionContextId":1,"hash":"29a76fd197903ede308d2b8b198e79da6302229f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cancellation.js.map","hasSourceURL":false,"isModule":false,"length":4473,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"514","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":3,"executionContextId":1,"hash":"226da5de8fba6e271965013b1d580092406cf998","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimalTranslations.js.map","hasSourceURL":false,"isModule":false,"length":1395,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"515","url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","startLine":0,"startColumn":0,"endLine":503,"endColumn":3,"executionContextId":1,"hash":"37d8fe6d9807a4c744afe7e141d7b2b17230de2a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keyCodes.js.map","hasSourceURL":false,"isModule":false,"length":22054,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"516","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"3e402809a463066639ce87a8bd24ba9b42b1f602","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceTags.js.map","hasSourceURL":false,"isModule":false,"length":804,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"517","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"116698583181749d1e626085b29e0e92345530fb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logsActions.js.map","hasSourceURL":false,"isModule":false,"length":4202,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"518","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"0616ca6e6107257a67c02f3454eabfd7181f22db","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorContextKeys.js.map","hasSourceURL":false,"isModule":false,"length":5261,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"519","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js","startLine":0,"startColumn":0,"endLine":220,"endColumn":3,"executionContextId":1,"hash":"33c2aeba37470faf3e198bf851839cc3593969a7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceTags.js.map","hasSourceURL":false,"isModule":false,"length":12168,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"520","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"39bcfeb9222c63f546bd26541bc3dfa27fa2bad2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileCommands.js.map","hasSourceURL":false,"isModule":false,"length":1641,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101370,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"521","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js","startLine":0,"startColumn":0,"endLine":101,"endColumn":3,"executionContextId":1,"hash":"0f0df5d9467f074d08cd297822fd3d56522a3c94","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"files.js.map","hasSourceURL":false,"isModule":false,"length":5631,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"522","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"0d1604656eaa441e2101db616cf468947028a81d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"descriptors.js.map","hasSourceURL":false,"isModule":false,"length":1134,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"523","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/resources.js","startLine":0,"startColumn":0,"endLine":184,"endColumn":3,"executionContextId":1,"hash":"0b32c9745509b4f75e4409a095487d965f53fa3d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resources.js.map","hasSourceURL":false,"isModule":false,"length":11498,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"524","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/editor.js","startLine":0,"startColumn":0,"endLine":111,"endColumn":3,"executionContextId":1,"hash":"3c9f59912cfdf2896fdee26bc477f75c4574d1b8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.js.map","hasSourceURL":false,"isModule":false,"length":4922,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"525","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js","startLine":0,"startColumn":0,"endLine":260,"endColumn":3,"executionContextId":1,"hash":"1ac974a23815359215ca771841c24864649062f2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":14034,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"526","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":3,"executionContextId":1,"hash":"06391d213730c03d5f6a754f5c22e916564e3be5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileEditor.js.map","hasSourceURL":false,"isModule":false,"length":6296,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"527","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js","startLine":0,"startColumn":0,"endLine":176,"endColumn":3,"executionContextId":1,"hash":"23eeeba82e3701a032499d3320be0af11fbb3657","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"files.js.map","hasSourceURL":false,"isModule":false,"length":10947,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"528","url":"file:///Users/roblou/code/vscode/out/vs/base/common/color.js","startLine":0,"startColumn":0,"endLine":502,"endColumn":3,"executionContextId":1,"hash":"0e3c2953859951f54459480374195eea67899f2c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"color.js.map","hasSourceURL":false,"isModule":false,"length":21910,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"529","url":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js","startLine":0,"startColumn":0,"endLine":393,"endColumn":3,"executionContextId":1,"hash":"13ac01369f55115b12e49f3baa13ce304251a30c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorRegistry.js.map","hasSourceURL":false,"isModule":false,"length":57166,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"530","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js","startLine":0,"startColumn":0,"endLine":55,"endColumn":3,"executionContextId":1,"hash":"01afc7678def928252001826ac7fb44328e19cab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.js.map","hasSourceURL":false,"isModule":false,"length":3034,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"531","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/theme.js","startLine":0,"startColumn":0,"endLine":518,"endColumn":3,"executionContextId":1,"hash":"276f7bc93d561af21d196683c82331a6480677f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"theme.js.map","hasSourceURL":false,"isModule":false,"length":45345,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"532","url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","startLine":0,"startColumn":0,"endLine":229,"endColumn":3,"executionContextId":1,"hash":"0728e3039888edec035cc13d786ad76050425aba","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"types.js.map","hasSourceURL":false,"isModule":false,"length":8696,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"533","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"03e1cede95d5ce0d374d9e7f9aa43bd55a671051","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debug.js.map","hasSourceURL":false,"isModule":false,"length":6786,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"534","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js","startLine":0,"startColumn":0,"endLine":89,"endColumn":3,"executionContextId":1,"hash":"0462b7039cb2965a10cd8bb1c599c78d66493db9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorGroupsService.js.map","hasSourceURL":false,"isModule":false,"length":5005,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"535","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js","startLine":0,"startColumn":0,"endLine":237,"endColumn":3,"executionContextId":1,"hash":"1b13c107402bbb5c253bd864561254b85aa0614c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backupTracker.js.map","hasSourceURL":false,"isModule":false,"length":15792,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"536","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js","startLine":0,"startColumn":0,"endLine":99,"endColumn":3,"executionContextId":1,"hash":"1ebe83f87270eec51295229c1d5ce4ca631bd867","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalInstanceService.js.map","hasSourceURL":false,"isModule":false,"length":7301,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"537","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js","startLine":0,"startColumn":0,"endLine":27,"endColumn":3,"executionContextId":1,"hash":"11c6ce1f7437d7bf549a824d12f9c7dc4ff9a37a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminal.js.map","hasSourceURL":false,"isModule":false,"length":1700,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"538","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js","startLine":0,"startColumn":0,"endLine":158,"endColumn":3,"executionContextId":1,"hash":"084756c71e052ac817d397ae76681c531ae77658","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminal.js.map","hasSourceURL":false,"isModule":false,"length":7636,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"539","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"25ef99ab100d542f38539527147bfa6c112c686b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalNativeService.js.map","hasSourceURL":false,"isModule":false,"length":4950,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"540","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js","startLine":0,"startColumn":0,"endLine":276,"endColumn":3,"executionContextId":1,"hash":"0cf9588c454ef8997094ec110fafa18850a69f85","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminal.js.map","hasSourceURL":false,"isModule":false,"length":21108,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"541","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js","startLine":0,"startColumn":0,"endLine":352,"endColumn":3,"executionContextId":1,"hash":"2ac834902667fae0611e758028af67cd5d1e7fc9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalConfiguration.js.map","hasSourceURL":false,"isModule":false,"length":26773,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","startLine":0,"startColumn":0,"endLine":980,"endColumn":3,"executionContextId":1,"hash":"074f854746aa0ede0f28a89ead85b5f13d99dba9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookEditor.js.map","hasSourceURL":false,"isModule":false,"length":58642,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.32","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/media/notebook.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.449033,"wallTime":1588425101.32752,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"543","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js","startLine":0,"startColumn":0,"endLine":172,"endColumn":3,"executionContextId":1,"hash":"13dc55628bfeeddb772bacea09c5d0bc2c07f720","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewCommands.js.map","hasSourceURL":false,"isModule":false,"length":9946,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"544","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","startLine":0,"startColumn":0,"endLine":1184,"endColumn":3,"executionContextId":1,"hash":"245849d74fb1f47b6b56305f4546ee3f186eb032","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"coreActions.js.map","hasSourceURL":false,"isModule":false,"length":54019,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"545","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js","startLine":0,"startColumn":0,"endLine":417,"endColumn":3,"executionContextId":1,"hash":"3eefe7561d5312d07ee1e4d9c471bd0a31cda91d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewElement.js.map","hasSourceURL":false,"isModule":false,"length":21453,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101371,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"546","url":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"3dc6cafa2b5b67783f04e0b156edf3b449501e8b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"downloadIpc.js.map","hasSourceURL":false,"isModule":false,"length":1846,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"547","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js","startLine":0,"startColumn":0,"endLine":200,"endColumn":3,"executionContextId":1,"hash":"1bf5c829984c193a7882af285d0aa66052a2bb43","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextkeys.js.map","hasSourceURL":false,"isModule":false,"length":15540,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"548","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"06fc9e906033beba29cd46891e96880806778c29","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sleepResumeRepaintMinimap.js.map","hasSourceURL":false,"isModule":false,"length":2269,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"549","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js","startLine":0,"startColumn":0,"endLine":905,"endColumn":3,"executionContextId":1,"hash":"33f81793300126d4743baba129e6ca3e7b7b1e67","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleFileDialog.js.map","hasSourceURL":false,"isModule":false,"length":51822,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"550","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"18c33567aa146aca613d95aa16a949a9805da264","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inputClipboardActions.js.map","hasSourceURL":false,"isModule":false,"length":1965,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"551","url":"file:///Users/roblou/code/vscode/out/vs/base/common/objects.js","startLine":0,"startColumn":0,"endLine":221,"endColumn":3,"executionContextId":1,"hash":"08216d447d080f2c6d2ecbe7a9cfc56115b35eed","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"objects.js.map","hasSourceURL":false,"isModule":false,"length":7811,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"552","url":"file:///Users/roblou/code/vscode/out/vs/base/node/processes.js","startLine":0,"startColumn":0,"endLine":440,"endColumn":3,"executionContextId":1,"hash":"10588ece277b6e721276527049af3e815acaf1e0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"processes.js.map","hasSourceURL":false,"isModule":false,"length":20097,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"553","url":"file:///Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":3,"executionContextId":1,"hash":"0bc49db8046b7360628665d74332a0c2170b98c2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHostDebugIpc.js.map","hasSourceURL":false,"isModule":false,"length":4405,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"554","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":3,"executionContextId":1,"hash":"2eb159c771a065ab32dde9f998bfce5f5b5de6ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"startDebugTextMate.js.map","hasSourceURL":false,"isModule":false,"length":6026,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"555","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js","startLine":0,"startColumn":0,"endLine":130,"endColumn":3,"executionContextId":1,"hash":"223bd5b835e8968960ad48475250922a55782117","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selectionClipboard.js.map","hasSourceURL":false,"isModule":false,"length":7513,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"556","url":"file:///Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1b7e09245a1a0ad064840ab743e3af1138d13e4c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHostDebug.js.map","hasSourceURL":false,"isModule":false,"length":824,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"557","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"1928f5ddaabc1ec609f99e0071088df30748565b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webview.js.map","hasSourceURL":false,"isModule":false,"length":1715,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"558","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"3d340c80a65a33c27a3749b694116d6f803a563d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"externalTerminal.js.map","hasSourceURL":false,"isModule":false,"length":814,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"559","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js","startLine":0,"startColumn":0,"endLine":165,"endColumn":3,"executionContextId":1,"hash":"3317defd6dd599da53a0a3827ce9d1f942a877fb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewEditor.js.map","hasSourceURL":false,"isModule":false,"length":9331,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"560","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"28715f368ecf997c7b5d966b55423cb425e7fe29","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewService.js.map","hasSourceURL":false,"isModule":false,"length":3780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"561","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js","startLine":0,"startColumn":0,"endLine":361,"endColumn":3,"executionContextId":1,"hash":"2cc6bf226a56d429593e044e85cd8ac7668d5a1c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"perfviewEditor.js.map","hasSourceURL":false,"isModule":false,"length":20717,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"562","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js","startLine":0,"startColumn":0,"endLine":565,"endColumn":3,"executionContextId":1,"hash":"0e5dacf0547134764c148e9972cf559a184b4fbd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"runtimeExtensionsEditor.js.map","hasSourceURL":false,"isModule":false,"length":38324,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.33","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/media/runtimeExtensionsEditor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.461651,"wallTime":1588425101.340138,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"563","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js","startLine":0,"startColumn":0,"endLine":153,"endColumn":3,"executionContextId":1,"hash":"070d3faca0a7d7962cf81cc005b256723c34d53f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionProfileService.js.map","hasSourceURL":false,"isModule":false,"length":10312,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"564","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js","startLine":0,"startColumn":0,"endLine":128,"endColumn":3,"executionContextId":1,"hash":"092b6aa55ef0ee69596b8ce7c157a5512ac253d2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"startupProfiler.js.map","hasSourceURL":false,"isModule":false,"length":8573,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"565","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js","startLine":0,"startColumn":0,"endLine":129,"endColumn":3,"executionContextId":1,"hash":"237aa4a23ba5b6760a92034f7ebcbdfb7590b7be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"startupTimings.js.map","hasSourceURL":false,"isModule":false,"length":7584,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"566","url":"file:///Users/roblou/code/vscode/out/vs/base/node/extpath.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"094b770052bca4d50ce94aaf20db530f73ddd9a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extpath.js.map","hasSourceURL":false,"isModule":false,"length":4671,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"567","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"2c7681f6a8f27c0b43358e396c3434364c20fcc7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"runtimeExtensionsInput.js.map","hasSourceURL":false,"isModule":false,"length":1853,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"568","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"11a5d5443b9ac2244ed087bf8630ba902dc4536f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsActions.js.map","hasSourceURL":false,"isModule":false,"length":3527,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"569","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"3db549dba799902120175ac9140b5f852cc4284f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsAutoProfiler.js.map","hasSourceURL":false,"isModule":false,"length":9996,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"570","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js","startLine":0,"startColumn":0,"endLine":55,"endColumn":3,"executionContextId":1,"hash":"1887a9653171be863be9cc430ec9fcc75ba3961a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"issueActions.js.map","hasSourceURL":false,"isModule":false,"length":3441,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"571","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"0dd0be9c82764e6d1e5eb41db52ebc0b1cef82af","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"issue.js.map","hasSourceURL":false,"isModule":false,"length":799,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101372,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"572","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js","startLine":0,"startColumn":0,"endLine":108,"endColumn":3,"executionContextId":1,"hash":"1ddc20cd79c194006e75ea11124b7b557bd50969","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"issueService.js.map","hasSourceURL":false,"isModule":false,"length":7357,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"573","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js","startLine":0,"startColumn":0,"endLine":123,"endColumn":3,"executionContextId":1,"hash":"0cf447c05d9f87080aaa6ca2ba1069be3dcfcb61","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"TMHelper.js.map","hasSourceURL":false,"isModule":false,"length":5068,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"574","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes.js","startLine":0,"startColumn":0,"endLine":639,"endColumn":3,"executionContextId":1,"hash":"168bb8924365feed7742cab692ba7e323b20c139","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modes.js.map","hasSourceURL":false,"isModule":false,"length":29837,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"575","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"17d0f6f29b361fe138f50e7c4119c2ca2fd1322d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commands.js.map","hasSourceURL":false,"isModule":false,"length":721,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"576","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js","startLine":0,"startColumn":0,"endLine":45,"endColumn":3,"executionContextId":1,"hash":"0107b6328d6403432135ecbe9d6c2c3263c71ebe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryOptOut.js.map","hasSourceURL":false,"isModule":false,"length":3613,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"577","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js","startLine":0,"startColumn":0,"endLine":95,"endColumn":3,"executionContextId":1,"hash":"3ec7ed973229acf823322cd7badc1d432acf84db","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationExportHelper.js.map","hasSourceURL":false,"isModule":false,"length":5718,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"578","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/index.js","startLine":0,"startColumn":0,"endLine":154,"endColumn":66,"executionContextId":1,"hash":"2b6d92c52e5ffe1b821bd57e76e817595f2d1586","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5342,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"579","url":"/Users/roblou/code/vscode/node_modules/safer-buffer/safer.js","startLine":0,"startColumn":0,"endLine":78,"endColumn":66,"executionContextId":1,"hash":"1877afcc5616ad0e607d016161554bfb783eb96e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2332,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"580","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/bom-handling.js","startLine":0,"startColumn":0,"endLine":53,"endColumn":66,"executionContextId":1,"hash":"2c308e485dcf8fa06d64d8fdb067ebbf1858f8fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1331,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"581","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/streams.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":66,"executionContextId":1,"hash":"270a71d13361c46e2dc282ca5b12a42e18755a51","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3609,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"582","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/extend-node.js","startLine":0,"startColumn":0,"endLine":218,"endColumn":66,"executionContextId":1,"hash":"1732243f56b8e11557d00c0c7ea3125a5716cddc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":8923,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.32","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.482612,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/media/notebook.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.32","timestamp":547783.482679,"dataLength":24954,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.32","timestamp":547783.482773,"encodedDataLength":24954,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.33","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.48377,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/media/runtimeExtensionsEditor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.33","timestamp":547783.483819,"dataLength":2354,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101373,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.33","timestamp":547783.483869,"encodedDataLength":2354,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425101373,"metadata":{"connectionId":1,"message":{"seq":374,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/codicons.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/codicons.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101373,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101373,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextview/browser/contextViewService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextViewService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextViewService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextViewService.ts","sourceMapSources":["vs/platform/contextview/browser/contextViewService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101374,"metadata":{"connectionId":1,"message":{"seq":375,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js","sourceReference":1926528083}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101375,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425101376,"metadata":{"connectionId":1,"message":{"seq":376,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextViewService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextViewService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101377,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101377,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/list/browser/listService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/list/browser/listService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/list/browser/listService.ts","sourceMapSources":["vs/platform/list/browser/listService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101378,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425101379,"metadata":{"connectionId":1,"message":{"seq":377,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/list/browser/listService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/list/browser/listService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101380,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101380,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/editorWorkerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerService.ts","sourceMapSources":["vs/editor/common/services/editorWorkerService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101380,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101381,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101382,"metadata":{"connectionId":1,"message":{"seq":378,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js","sourceReference":632674658}}}},"level":0} {"tag":"dap.send","timestamp":1588425101382,"metadata":{"connectionId":1,"message":{"seq":379,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","sourceReference":679546567}}}},"level":0} {"tag":"dap.send","timestamp":1588425101382,"metadata":{"connectionId":1,"message":{"seq":380,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js","path":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js","sourceReference":1122629193}}}},"level":0} {"tag":"dap.send","timestamp":1588425101385,"metadata":{"connectionId":1,"message":{"seq":381,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101386,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101386,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/markersDecorationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/markersDecorationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/markersDecorationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/markersDecorationService.ts","sourceMapSources":["vs/editor/common/services/markersDecorationService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101386,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425101387,"metadata":{"connectionId":1,"message":{"seq":382,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js","path":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js","sourceReference":868746115}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101390,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"583","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js","startLine":0,"startColumn":0,"endLine":689,"endColumn":3,"executionContextId":1,"hash":"32b829032cfd18870bedbc15b0ea6d9d1973240f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tasks.js.map","hasSourceURL":false,"isModule":false,"length":29533,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101390,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"584","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js","startLine":0,"startColumn":0,"endLine":335,"endColumn":3,"executionContextId":1,"hash":"00ef5e9e00997e3f0dff93e81f8cb0af4b921ce2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"processRunnerDetector.js.map","hasSourceURL":false,"isModule":false,"length":17492,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101391,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"585","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js","startLine":0,"startColumn":0,"endLine":435,"endColumn":3,"executionContextId":1,"hash":"1f72e627300f35c73f9e362c8d76b8767cc12e2a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"processTaskSystem.js.map","hasSourceURL":false,"isModule":false,"length":22856,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101391,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"586","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js","startLine":0,"startColumn":0,"endLine":1514,"endColumn":3,"executionContextId":1,"hash":"1d1c593a51323c881576f18cc260f2131c6375e8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskConfiguration.js.map","hasSourceURL":false,"isModule":false,"length":72254,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101391,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"587","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js","startLine":0,"startColumn":0,"endLine":2796,"endColumn":3,"executionContextId":1,"hash":"1ea8cbe333edaa483a269e3607a82c1c11781a07","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractTaskService.js.map","hasSourceURL":false,"isModule":false,"length":152879,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101391,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"588","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"012b897820d881cb4f16c9db124277dc411303a6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskService.js.map","hasSourceURL":false,"isModule":false,"length":853,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425101392,"metadata":{"connectionId":1,"message":{"seq":383,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/markersDecorationService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/markersDecorationService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101393,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425101394,"metadata":{"connectionId":1,"message":{"seq":384,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js","sourceReference":718413225}}}},"level":0} {"tag":"dap.send","timestamp":1588425101394,"metadata":{"connectionId":1,"message":{"seq":385,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js","sourceReference":899792457}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101397,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101397,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/markerDecorationsServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/markerDecorationsServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/markerDecorationsServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/markerDecorationsServiceImpl.ts","sourceMapSources":["vs/editor/common/services/markerDecorationsServiceImpl.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101397,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101397,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/editorWorkerServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl.ts","sourceMapSources":["vs/editor/common/services/editorWorkerServiceImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101397,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101400,"metadata":{"connectionId":1,"message":{"seq":386,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/markerDecorationsServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/markerDecorationsServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101401,"metadata":{"connectionId":1,"message":{"seq":387,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101401,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101401,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/markers/common/markers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/markers/common/markers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/markers/common/markers.ts","sourceMapSources":["vs/platform/markers/common/markers.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101401,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101401,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/markers/common/markerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/markers/common/markerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/markers/common/markerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/markers/common/markerService.ts","sourceMapSources":["vs/platform/markers/common/markerService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101402,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101403,"metadata":{"connectionId":1,"message":{"seq":388,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js","sourceReference":132337974}}}},"level":0} {"tag":"dap.send","timestamp":1588425101403,"metadata":{"connectionId":1,"message":{"seq":389,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js","sourceReference":1537002740}}}},"level":0} {"tag":"dap.send","timestamp":1588425101403,"metadata":{"connectionId":1,"message":{"seq":390,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/markers/common/markers.ts","path":"/Users/roblou/code/vscode/src/vs/platform/markers/common/markers.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101403,"metadata":{"connectionId":1,"message":{"seq":391,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/markers/common/markerService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/markers/common/markerService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101403,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101403,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/modelServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/modelServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/modelServiceImpl.ts","sourceMapSources":["vs/editor/common/services/modelServiceImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101404,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101405,"metadata":{"connectionId":1,"message":{"seq":392,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/modelServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/modelServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101405,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101405,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/textResourceConfigurationServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationServiceImpl.ts","sourceMapSources":["vs/editor/common/services/textResourceConfigurationServiceImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101405,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/download.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/download/common/download.js"},"level":0} {"tag":"dap.send","timestamp":1588425101406,"metadata":{"connectionId":1,"message":{"seq":393,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101406,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101406,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/modelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/modelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/modelService.ts","sourceMapSources":["vs/editor/common/services/modelService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101406,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101407,"metadata":{"connectionId":1,"message":{"seq":394,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js","sourceReference":1511628363}}}},"level":0} {"tag":"dap.send","timestamp":1588425101407,"metadata":{"connectionId":1,"message":{"seq":395,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/download/common/download.js","path":"/Users/roblou/code/vscode/out/vs/platform/download/common/download.js","sourceReference":1167000858}}}},"level":0} {"tag":"dap.send","timestamp":1588425101407,"metadata":{"connectionId":1,"message":{"seq":396,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js","path":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js","sourceReference":717471759}}}},"level":0} {"tag":"dap.send","timestamp":1588425101407,"metadata":{"connectionId":1,"message":{"seq":397,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/modelService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/modelService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101407,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101407,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/textResourceConfigurationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/textResourceConfigurationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationService.ts","sourceMapSources":["vs/editor/common/services/textResourceConfigurationService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101407,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101409,"metadata":{"connectionId":1,"message":{"seq":398,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/textResourceConfigurationService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101409,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/editor.all.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/editor.all.js"},"level":0} {"tag":"dap.send","timestamp":1588425101409,"metadata":{"connectionId":1,"message":{"seq":399,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js","path":"/Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js","sourceReference":2038715913}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101410,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101410,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextkey/browser/contextKeyService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextkey/browser/contextKeyService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextkey/browser/contextKeyService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextkey/browser/contextKeyService.ts","sourceMapSources":["vs/platform/contextkey/browser/contextKeyService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101410,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js"},"level":0} {"tag":"dap.send","timestamp":1588425101410,"metadata":{"connectionId":1,"message":{"seq":400,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/editor.all.js","path":"/Users/roblou/code/vscode/out/vs/editor/editor.all.js","sourceReference":620608753}}}},"level":0} {"tag":"dap.send","timestamp":1588425101411,"metadata":{"connectionId":1,"message":{"seq":401,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextkey/browser/contextKeyService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextkey/browser/contextKeyService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101411,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101411,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/download/common/download.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/download.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/download/common/download.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/download/common/download.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/download/common/download.ts","sourceMapSources":["vs/platform/download/common/download.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101411,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101411,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/download/common/downloadService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/download/common/downloadService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/download/common/downloadService.ts","sourceMapSources":["vs/platform/download/common/downloadService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101412,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101412,"metadata":{"connectionId":1,"message":{"seq":402,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js","path":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js","sourceReference":517920643}}}},"level":0} {"tag":"dap.send","timestamp":1588425101412,"metadata":{"connectionId":1,"message":{"seq":403,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/download/common/download.ts","path":"/Users/roblou/code/vscode/src/vs/platform/download/common/download.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101413,"metadata":{"connectionId":1,"message":{"seq":404,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/download/common/downloadService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/download/common/downloadService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101413,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101413,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/actions/common/menuService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/actions/common/menuService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/actions/common/menuService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/actions/common/menuService.ts","sourceMapSources":["vs/platform/actions/common/menuService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101413,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101413,"metadata":{"connectionId":1,"message":{"seq":405,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js","path":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js","sourceReference":369511622}}}},"level":0} {"tag":"dap.send","timestamp":1588425101414,"metadata":{"connectionId":1,"message":{"seq":406,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/menuService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/menuService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101414,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101414,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/editor.all.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/editor.all.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/editor.all.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/editor.all.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/editor.all.ts","sourceMapSources":["vs/editor/editor.all.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101415,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js"},"level":0} {"tag":"dap.send","timestamp":1588425101415,"metadata":{"connectionId":1,"message":{"seq":407,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js","sourceReference":1517748627}}}},"level":0} {"tag":"dap.send","timestamp":1588425101415,"metadata":{"connectionId":1,"message":{"seq":408,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/editor.all.ts","path":"/Users/roblou/code/vscode/src/vs/editor/editor.all.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101415,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101415,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/userDataSync/common/userDataSync.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSync.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSync.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSync.ts","sourceMapSources":["vs/platform/userDataSync/common/userDataSync.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101417,"metadata":{"connectionId":1,"message":{"seq":409,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSync.ts","path":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSync.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101417,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101417,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/userDataSync/common/userDataSyncEnablementService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncEnablementService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService.ts","sourceMapSources":["vs/platform/userDataSync/common/userDataSyncEnablementService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101418,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101418,"metadata":{"connectionId":1,"message":{"seq":410,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js","path":"/Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js","sourceReference":1553796255}}}},"level":0} {"tag":"dap.send","timestamp":1588425101418,"metadata":{"connectionId":1,"message":{"seq":411,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101419,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101419,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/extensionHost.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/extensionHost.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/extensionHost.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/extensionHost.contribution.ts","sourceMapSources":["vs/workbench/api/browser/extensionHost.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101419,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101420,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101420,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/opener/common/opener.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/opener/common/opener.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/opener/common/opener.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/opener/common/opener.ts","sourceMapSources":["vs/platform/opener/common/opener.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101420,"metadata":{"connectionId":1,"message":{"seq":412,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/extensionHost.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/extensionHost.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101420,"metadata":{"connectionId":1,"message":{"seq":413,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js","sourceReference":2027287582}}}},"level":0} {"tag":"dap.send","timestamp":1588425101420,"metadata":{"connectionId":1,"message":{"seq":414,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js","sourceReference":1936741399}}}},"level":0} {"tag":"dap.send","timestamp":1588425101421,"metadata":{"connectionId":1,"message":{"seq":415,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/opener/common/opener.ts","path":"/Users/roblou/code/vscode/src/vs/platform/opener/common/opener.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101421,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101422,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101422,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/workbench.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/workbench.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/workbench.contribution.ts","sourceMapSources":["vs/workbench/browser/workbench.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101422,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101423,"metadata":{"connectionId":1,"message":{"seq":416,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/workbench.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/workbench.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101423,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101423,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/developerActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/developerActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/developerActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/developerActions.ts","sourceMapSources":["vs/workbench/browser/actions/developerActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101423,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101423,"metadata":{"connectionId":1,"message":{"seq":417,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js","sourceReference":719716995}}}},"level":0} {"tag":"dap.send","timestamp":1588425101424,"metadata":{"connectionId":1,"message":{"seq":418,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/developerActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/developerActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101424,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101425,"metadata":{"connectionId":1,"message":{"seq":419,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js","sourceReference":1074471859}}}},"level":0} {"tag":"dap.send","timestamp":1588425101425,"metadata":{"connectionId":1,"message":{"seq":420,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js","sourceReference":1308904728}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101426,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101426,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/windowActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/windowActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/windowActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/windowActions.ts","sourceMapSources":["vs/workbench/browser/actions/windowActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101426,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425101427,"metadata":{"connectionId":1,"message":{"seq":421,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js","sourceReference":1505091520}}}},"level":0} {"tag":"dap.send","timestamp":1588425101427,"metadata":{"connectionId":1,"message":{"seq":422,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/windowActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/windowActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101428,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101428,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/helpActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/helpActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/helpActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/helpActions.ts","sourceMapSources":["vs/workbench/browser/actions/helpActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101428,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101429,"metadata":{"connectionId":1,"message":{"seq":423,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/helpActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/helpActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101429,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101429,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/textInputActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/textInputActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/textInputActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/textInputActions.ts","sourceMapSources":["vs/workbench/browser/actions/textInputActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101429,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101430,"metadata":{"connectionId":1,"message":{"seq":424,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js","sourceReference":834820086}}}},"level":0} {"tag":"dap.send","timestamp":1588425101430,"metadata":{"connectionId":1,"message":{"seq":425,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js","sourceReference":1339815147}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101431,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101431,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/layoutActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/layoutActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/layoutActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/layoutActions.ts","sourceMapSources":["vs/workbench/browser/actions/layoutActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101431,"metadata":{"connectionId":1,"message":{"seq":426,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/textInputActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/textInputActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101431,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425101431,"metadata":{"connectionId":1,"message":{"seq":427,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js","sourceReference":1527391834}}}},"level":0} {"tag":"dap.send","timestamp":1588425101432,"metadata":{"connectionId":1,"message":{"seq":428,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/layoutActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/layoutActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101432,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101433,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/listCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/listCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/listCommands.ts","sourceMapSources":["vs/workbench/browser/actions/listCommands.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101433,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425101434,"metadata":{"connectionId":1,"message":{"seq":429,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js","sourceReference":1137856271}}}},"level":0} {"tag":"dap.send","timestamp":1588425101434,"metadata":{"connectionId":1,"message":{"seq":430,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/listCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/listCommands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101434,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101435,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/navigationActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/navigationActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/navigationActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/navigationActions.ts","sourceMapSources":["vs/workbench/browser/actions/navigationActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101435,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425101436,"metadata":{"connectionId":1,"message":{"seq":431,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/navigationActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/navigationActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101437,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101437,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/workspaceActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceActions.ts","sourceMapSources":["vs/workbench/browser/actions/workspaceActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101437,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425101437,"metadata":{"connectionId":1,"message":{"seq":432,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js","sourceReference":1937033624}}}},"level":0} {"tag":"dap.send","timestamp":1588425101437,"metadata":{"connectionId":1,"message":{"seq":433,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js","sourceReference":1537844720}}}},"level":0} {"tag":"dap.send","timestamp":1588425101438,"metadata":{"connectionId":1,"message":{"seq":434,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101438,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101438,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/workspaceCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/workspaceCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceCommands.ts","sourceMapSources":["vs/workbench/browser/actions/workspaceCommands.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101438,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425101440,"metadata":{"connectionId":1,"message":{"seq":435,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/workspaceCommands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101440,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101440,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/menusExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/menusExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/menusExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/menusExtensionPoint.ts","sourceMapSources":["vs/workbench/api/common/menusExtensionPoint.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101440,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101441,"metadata":{"connectionId":1,"message":{"seq":436,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js","sourceReference":1975863894}}}},"level":0} {"tag":"dap.send","timestamp":1588425101441,"metadata":{"connectionId":1,"message":{"seq":437,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","sourceReference":90883489}}}},"level":0} {"tag":"dap.send","timestamp":1588425101442,"metadata":{"connectionId":1,"message":{"seq":438,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/menusExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/menusExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101442,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101442,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/configurationExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/configurationExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/configurationExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/configurationExtensionPoint.ts","sourceMapSources":["vs/workbench/api/common/configurationExtensionPoint.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101442,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425101443,"metadata":{"connectionId":1,"message":{"seq":439,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js","sourceReference":627158796}}}},"level":0} {"tag":"dap.send","timestamp":1588425101444,"metadata":{"connectionId":1,"message":{"seq":440,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/configurationExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/configurationExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101445,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101445,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/viewsExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/viewsExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.ts","sourceMapSources":["vs/workbench/api/browser/viewsExtensionPoint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101445,"metadata":{"connectionId":1,"message":{"seq":441,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","sourceReference":1162222210}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101445,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425101446,"metadata":{"connectionId":1,"message":{"seq":442,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101446,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101446,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorPart.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorPart.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101447,"metadata":{"connectionId":1,"message":{"seq":443,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorPart.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101447,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101447,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/actions/quickAccessActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/actions/quickAccessActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/quickAccessActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/actions/quickAccessActions.ts","sourceMapSources":["vs/workbench/browser/actions/quickAccessActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101447,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js"},"level":0} {"tag":"dap.send","timestamp":1588425101448,"metadata":{"connectionId":1,"message":{"seq":444,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/quickAccessActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/actions/quickAccessActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101448,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101448,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/sidebar/sidebarPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts","sourceMapSources":["vs/workbench/browser/parts/sidebar/sidebarPart.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101448,"metadata":{"connectionId":1,"message":{"seq":445,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js","sourceReference":2024819731}}}},"level":0} {"tag":"dap.send","timestamp":1588425101449,"metadata":{"connectionId":1,"message":{"seq":446,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101449,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425101450,"metadata":{"connectionId":1,"message":{"seq":447,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js","sourceReference":1714635925}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101451,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101451,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/activitybar/activitybarPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts","sourceMapSources":["vs/workbench/browser/parts/activitybar/activitybarPart.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101451,"metadata":{"connectionId":1,"message":{"seq":448,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js","sourceReference":839348881}}}},"level":0} {"tag":"dap.send","timestamp":1588425101452,"metadata":{"connectionId":1,"message":{"seq":449,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101452,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101452,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/views/views.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/views.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/views.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/views.ts","sourceMapSources":["vs/workbench/browser/parts/views/views.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101452,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425101453,"metadata":{"connectionId":1,"message":{"seq":450,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/views.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/views.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101454,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101454,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/panel/panelPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelPart.ts","sourceMapSources":["vs/workbench/browser/parts/panel/panelPart.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101454,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101455,"metadata":{"connectionId":1,"message":{"seq":451,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelPart.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101455,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101456,"metadata":{"connectionId":1,"message":{"seq":452,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js","sourceReference":1796745163}}}},"level":0} {"tag":"dap.send","timestamp":1588425101456,"metadata":{"connectionId":1,"message":{"seq":453,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js","path":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js","sourceReference":1050893814}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101456,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101456,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/statusbar/statusbarPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/statusbar/statusbarPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts","sourceMapSources":["vs/workbench/browser/parts/statusbar/statusbarPart.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101457,"metadata":{"connectionId":1,"message":{"seq":454,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101457,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js"},"level":0} {"tag":"dap.send","timestamp":1588425101458,"metadata":{"connectionId":1,"message":{"seq":455,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js","sourceReference":1117064068}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101458,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101458,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/undoRedo/common/undoRedoService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedoService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedoService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedoService.ts","sourceMapSources":["vs/platform/undoRedo/common/undoRedoService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101459,"metadata":{"connectionId":1,"message":{"seq":456,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedoService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedoService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101459,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101459,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/bulkEdit/browser/bulkEditService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/bulkEditService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts","sourceMapSources":["vs/workbench/services/bulkEdit/browser/bulkEditService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101459,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js"},"level":0} {"tag":"dap.send","timestamp":1588425101460,"metadata":{"connectionId":1,"message":{"seq":457,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js","sourceReference":1196527424}}}},"level":0} {"tag":"dap.send","timestamp":1588425101460,"metadata":{"connectionId":1,"message":{"seq":458,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101460,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101461,"metadata":{"connectionId":1,"message":{"seq":459,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js","sourceReference":729491322}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101461,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101461,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/browser/extensionUrlHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/browser/extensionUrlHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts","sourceMapSources":["vs/workbench/services/extensions/browser/extensionUrlHandler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101462,"metadata":{"connectionId":1,"message":{"seq":460,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101462,"metadata":{"connectionId":1,"message":{"seq":461,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js","sourceReference":1664937003}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101463,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101463,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/keybindingEditing.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingEditing.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.ts","sourceMapSources":["vs/workbench/services/keybinding/common/keybindingEditing.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101463,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101464,"metadata":{"connectionId":1,"message":{"seq":462,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101464,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101464,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/progress/browser/progressService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressService.ts","sourceMapSources":["vs/workbench/services/progress/browser/progressService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101465,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101466,"metadata":{"connectionId":1,"message":{"seq":463,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js","sourceReference":647397236}}}},"level":0} {"tag":"dap.send","timestamp":1588425101466,"metadata":{"connectionId":1,"message":{"seq":464,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js","sourceReference":1283998875}}}},"level":0} {"tag":"dap.send","timestamp":1588425101467,"metadata":{"connectionId":1,"message":{"seq":465,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101468,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101471,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101472,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101472,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/editor/browser/codeEditorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/codeEditorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/codeEditorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/codeEditorService.ts","sourceMapSources":["vs/workbench/services/editor/browser/codeEditorService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101472,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js"},"level":0} {"tag":"dap.send","timestamp":1588425101472,"metadata":{"connectionId":1,"message":{"seq":466,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","sourceReference":922160748}}}},"level":0} {"tag":"dap.send","timestamp":1588425101473,"metadata":{"connectionId":1,"message":{"seq":467,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js","sourceReference":159537157}}}},"level":0} {"tag":"dap.send","timestamp":1588425101473,"metadata":{"connectionId":1,"message":{"seq":468,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/codeEditorService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/codeEditorService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101473,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101473,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/decorations/browser/decorationsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorationsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorationsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorationsService.ts","sourceMapSources":["vs/workbench/services/decorations/browser/decorationsService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101474,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101475,"metadata":{"connectionId":1,"message":{"seq":469,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorationsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorationsService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101476,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101476,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/editor/browser/editorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/editorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/editorService.ts","sourceMapSources":["vs/workbench/services/editor/browser/editorService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101476,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101477,"metadata":{"connectionId":1,"message":{"seq":470,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js","sourceReference":481764230}}}},"level":0} {"tag":"dap.send","timestamp":1588425101477,"metadata":{"connectionId":1,"message":{"seq":471,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js","sourceReference":27502577}}}},"level":0} {"tag":"dap.send","timestamp":1588425101479,"metadata":{"connectionId":1,"message":{"seq":472,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/editorService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/browser/editorService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101479,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101479,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textmodelResolver/common/textModelResolverService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textmodelResolver/common/textModelResolverService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts","sourceMapSources":["vs/workbench/services/textmodelResolver/common/textModelResolverService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101480,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101481,"metadata":{"connectionId":1,"message":{"seq":473,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js","sourceReference":282123753}}}},"level":0} {"tag":"dap.send","timestamp":1588425101482,"metadata":{"connectionId":1,"message":{"seq":474,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101483,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101483,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/history/browser/history.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/history/browser/history.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/history/browser/history.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/history/browser/history.ts","sourceMapSources":["vs/workbench/services/history/browser/history.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101484,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101484,"metadata":{"connectionId":1,"message":{"seq":475,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","sourceReference":1726417327}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101485,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101485,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/activity/browser/activityService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/browser/activityService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/activity/browser/activityService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/activity/browser/activityService.ts","sourceMapSources":["vs/workbench/services/activity/browser/activityService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101485,"metadata":{"connectionId":1,"message":{"seq":476,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/history/browser/history.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/history/browser/history.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101485,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101485,"metadata":{"connectionId":1,"message":{"seq":477,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js","sourceReference":111001586}}}},"level":0} {"tag":"dap.send","timestamp":1588425101486,"metadata":{"connectionId":1,"message":{"seq":478,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/activity/browser/activityService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/activity/browser/activityService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101486,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101486,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/preferences/browser/preferencesService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/browser/preferencesService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/browser/preferencesService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/preferences/browser/preferencesService.ts","sourceMapSources":["vs/workbench/services/preferences/browser/preferencesService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101487,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101487,"metadata":{"connectionId":1,"message":{"seq":479,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js","sourceReference":1988353924}}}},"level":0} {"tag":"dap.send","timestamp":1588425101489,"metadata":{"connectionId":1,"message":{"seq":480,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/browser/preferencesService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/browser/preferencesService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101489,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101489,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/browser/keybindingService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceMapSources":["vs/workbench/services/keybinding/browser/keybindingService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101490,"metadata":{"connectionId":1,"message":{"seq":481,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js","sourceReference":399810238}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101490,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101490,"metadata":{"connectionId":1,"message":{"seq":482,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101491,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101491,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/untitled/common/untitledTextEditorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.ts","sourceMapSources":["vs/workbench/services/untitled/common/untitledTextEditorService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101492,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101492,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.ts","sourceMapSources":["vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101492,"metadata":{"connectionId":1,"message":{"seq":483,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101492,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101493,"metadata":{"connectionId":1,"message":{"seq":484,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js","sourceReference":689779641}}}},"level":0} {"tag":"dap.send","timestamp":1588425101494,"metadata":{"connectionId":1,"message":{"seq":485,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101494,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101494,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/mode/common/workbenchModeService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/mode/common/workbenchModeService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/mode/common/workbenchModeService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/mode/common/workbenchModeService.ts","sourceMapSources":["vs/workbench/services/mode/common/workbenchModeService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101495,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101495,"metadata":{"connectionId":1,"message":{"seq":486,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js","sourceReference":233098179}}}},"level":0} {"tag":"dap.send","timestamp":1588425101496,"metadata":{"connectionId":1,"message":{"seq":487,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/mode/common/workbenchModeService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/mode/common/workbenchModeService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101496,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101496,"metadata":{"connectionId":1,"message":{"seq":488,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","sourceReference":872350047}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101496,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101496,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/services/openerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/openerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/services/openerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/services/openerService.ts","sourceMapSources":["vs/editor/browser/services/openerService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101497,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101498,"metadata":{"connectionId":1,"message":{"seq":489,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/services/openerService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/services/openerService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101498,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101498,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/common/jsonEditingService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditingService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.ts","sourceMapSources":["vs/workbench/services/configuration/common/jsonEditingService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101498,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101499,"metadata":{"connectionId":1,"message":{"seq":490,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js","sourceReference":356058199}}}},"level":0} {"tag":"dap.send","timestamp":1588425101499,"metadata":{"connectionId":1,"message":{"seq":491,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js","sourceReference":879629499}}}},"level":0} {"tag":"dap.send","timestamp":1588425101499,"metadata":{"connectionId":1,"message":{"seq":492,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101499,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101499,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/commands/common/commandService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceMapSources":["vs/workbench/services/commands/common/commandService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101500,"metadata":{"connectionId":1,"message":{"seq":493,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js","sourceReference":659943924}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101500,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101501,"metadata":{"connectionId":1,"message":{"seq":494,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101501,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101501,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/label/common/labelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/label/common/labelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/label/common/labelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/label/common/labelService.ts","sourceMapSources":["vs/workbench/services/label/common/labelService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101501,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101502,"metadata":{"connectionId":1,"message":{"seq":495,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/label/common/labelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/label/common/labelService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101502,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101502,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/browser/workbenchThemeService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/workbenchThemeService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.ts","sourceMapSources":["vs/workbench/services/themes/browser/workbenchThemeService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101503,"metadata":{"connectionId":1,"message":{"seq":496,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js","sourceReference":1930438468}}}},"level":0} {"tag":"dap.send","timestamp":1588425101503,"metadata":{"connectionId":1,"message":{"seq":497,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js","sourceReference":733133671}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101503,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101503,"metadata":{"connectionId":1,"message":{"seq":498,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101503,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101503,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/notification/common/notificationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/notification/common/notificationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/notification/common/notificationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/notification/common/notificationService.ts","sourceMapSources":["vs/workbench/services/notification/common/notificationService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101504,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101504,"metadata":{"connectionId":1,"message":{"seq":499,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/notification/common/notificationService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/notification/common/notificationService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101505,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101505,"metadata":{"connectionId":1,"message":{"seq":500,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js","sourceReference":1575653628}}}},"level":0} {"tag":"dap.send","timestamp":1588425101505,"metadata":{"connectionId":1,"message":{"seq":501,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js","sourceReference":1370863477}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101505,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101505,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionManagement/common/extensionEnablementService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionEnablementService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts","sourceMapSources":["vs/workbench/services/extensionManagement/common/extensionEnablementService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101505,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101505,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/staticExtensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/staticExtensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/staticExtensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/staticExtensions.ts","sourceMapSources":["vs/workbench/services/extensions/common/staticExtensions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101506,"metadata":{"connectionId":1,"message":{"seq":502,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101506,"metadata":{"connectionId":1,"message":{"seq":503,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/staticExtensions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/staticExtensions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101506,"metadata":{"connectionId":1,"message":{"seq":504,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js","sourceReference":1188344796}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101506,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101507,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101507,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/common/remoteExplorerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteExplorerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.ts","sourceMapSources":["vs/workbench/services/remote/common/remoteExplorerService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101507,"metadata":{"connectionId":1,"message":{"seq":505,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101508,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101508,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workingCopy/common/workingCopyService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService.ts","sourceMapSources":["vs/workbench/services/workingCopy/common/workingCopyService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101508,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101508,"metadata":{"connectionId":1,"message":{"seq":506,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js","sourceReference":1532704946}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101508,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101508,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workingCopy/common/workingCopyFileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts","sourceMapSources":["vs/workbench/services/workingCopy/common/workingCopyFileService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101508,"metadata":{"connectionId":1,"message":{"seq":507,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101509,"metadata":{"connectionId":1,"message":{"seq":508,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101510,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101510,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/filesConfiguration/common/filesConfigurationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.ts","sourceMapSources":["vs/workbench/services/filesConfiguration/common/filesConfigurationService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101510,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101511,"metadata":{"connectionId":1,"message":{"seq":509,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101511,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101511,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/preferences.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/preferences.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101512,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101513,"metadata":{"connectionId":1,"message":{"seq":510,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101513,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101514,"metadata":{"connectionId":1,"message":{"seq":511,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferences.contribution.js","sourceReference":587710205}}}},"level":0} {"tag":"dap.send","timestamp":1588425101514,"metadata":{"connectionId":1,"message":{"seq":512,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","sourceReference":641102798}}}},"level":0} {"tag":"dap.send","timestamp":1588425101514,"metadata":{"connectionId":1,"message":{"seq":513,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js","sourceReference":1427609828}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101514,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"589","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/event.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"2bf0b8e02d2c461937eb48c4abc935b0373fbc50","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"event.js.map","hasSourceURL":false,"isModule":false,"length":1311,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"590","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js","startLine":0,"startColumn":0,"endLine":237,"endColumn":3,"executionContextId":1,"hash":"3b21f17b3a562d646303ffb85865b96773da01cc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keyboardEvent.js.map","hasSourceURL":false,"isModule":false,"length":9830,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"591","url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","startLine":0,"startColumn":0,"endLine":1011,"endColumn":3,"executionContextId":1,"hash":"06fc621b572f302711f77ae347e1c0754980057e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"strings.js.map","hasSourceURL":false,"isModule":false,"length":67283,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"592","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js","startLine":0,"startColumn":0,"endLine":127,"endColumn":3,"executionContextId":1,"hash":"2d32e1d51006fd890f1bf7d65033adc06b611c87","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mouseEvent.js.map","hasSourceURL":false,"isModule":false,"length":5555,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"593","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/canIUse.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"0497de09a5ddabf83aad1be0489831f611263341","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"canIUse.js.map","hasSourceURL":false,"isModule":false,"length":2903,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"594","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js","startLine":0,"startColumn":0,"endLine":200,"endColumn":3,"executionContextId":1,"hash":"2842ed3f9a1495b1467f7375a7b0effd7b164675","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionValidator.js.map","hasSourceURL":false,"isModule":false,"length":8657,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"595","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/part.js","startLine":0,"startColumn":0,"endLine":125,"endColumn":3,"executionContextId":1,"hash":"33d3ed794efb46ee5614cb5b8a9ab9f22d7603d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"part.js.map","hasSourceURL":false,"isModule":false,"length":5136,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101515,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.34","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/media/part.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.529737,"wallTime":1588425101.408221,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"596","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js","startLine":0,"startColumn":0,"endLine":107,"endColumn":3,"executionContextId":1,"hash":"2872233424b1c9e148dc9544c8a0c5fe338b2f6e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionManagementUtil.js.map","hasSourceURL":false,"isModule":false,"length":5479,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"597","url":"file:///Users/roblou/code/vscode/out/vs/base/common/map.js","startLine":0,"startColumn":0,"endLine":854,"endColumn":3,"executionContextId":1,"hash":"316e60476a08257d23c4d49a21c796ed5881ed02","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"map.js.map","hasSourceURL":false,"isModule":false,"length":29031,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"598","url":"file:///Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":3,"executionContextId":1,"hash":"181d3bca012a3cf57731ebb30757e80b7cb21068","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"serviceMachineId.js.map","hasSourceURL":false,"isModule":false,"length":1763,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"599","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js","startLine":0,"startColumn":0,"endLine":555,"endColumn":3,"executionContextId":1,"hash":"2df9ea10751ce5f12074757e1f2efa21421b42a6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menubarControl.js.map","hasSourceURL":false,"isModule":false,"length":33527,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"600","url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js","startLine":0,"startColumn":0,"endLine":258,"endColumn":3,"executionContextId":1,"hash":"036c1d2f92072d6a3e2c064b2fad09796a0299f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menuEntryActionViewItem.js.map","hasSourceURL":false,"isModule":false,"length":14094,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"601","url":"file:///Users/roblou/code/vscode/out/vs/base/common/codicon.js","startLine":0,"startColumn":0,"endLine":108,"endColumn":3,"executionContextId":1,"hash":"1f23ae354ddcd99343dd741957e02099149a5d15","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codicon.js.map","hasSourceURL":false,"isModule":false,"length":5445,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101516,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"602","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"339be18d2a0b45a352330dba14f2ebab2262ced9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextview.js.map","hasSourceURL":false,"isModule":false,"length":10369,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.35","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.535246,"wallTime":1588425101.413729,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","startLine":0,"startColumn":0,"endLine":1289,"endColumn":3,"executionContextId":1,"hash":"18ad2eac615d25481ab5a2be39b13f392c7fd25f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"listWidget.js.map","hasSourceURL":false,"isModule":false,"length":60502,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.36","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.537592,"wallTime":1588425101.416075,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"604","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js","startLine":0,"startColumn":0,"endLine":175,"endColumn":3,"executionContextId":1,"hash":"30483ea20db43dfc6361b77dcbe40c017c9dce84","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"listPaging.js.map","hasSourceURL":false,"isModule":false,"length":7101,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"605","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js","startLine":0,"startColumn":0,"endLine":138,"endColumn":3,"executionContextId":1,"hash":"24b535cf8f8fa4de14e99bab2980b8fe5bce2ab7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"objectTree.js.map","hasSourceURL":false,"isModule":false,"length":7349,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"606","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js","startLine":0,"startColumn":0,"endLine":139,"endColumn":3,"executionContextId":1,"hash":"04eb69d29c7f0e0f25a1dcf02e3f953917ac95ad","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dataTree.js.map","hasSourceURL":false,"isModule":false,"length":6492,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"607","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"3e53a476a46487c25df85e7bcd88cd09194a0620","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"model.js.map","hasSourceURL":false,"isModule":false,"length":7117,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"608","url":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js","startLine":0,"startColumn":0,"endLine":239,"endColumn":3,"executionContextId":1,"hash":"0fd4ece21e45b6b510456d5c229eab602cc19fc4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"styler.js.map","hasSourceURL":false,"isModule":false,"length":18562,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"609","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js","startLine":0,"startColumn":0,"endLine":899,"endColumn":3,"executionContextId":1,"hash":"00b2f3e8a014b995637f390519d625b52cb4e06f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"asyncDataTree.js.map","hasSourceURL":false,"isModule":false,"length":43024,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"610","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"26573e614e75d1123a54568157e6c8b776983fa4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorColorRegistry.js.map","hasSourceURL":false,"isModule":false,"length":12009,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"611","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","startLine":0,"startColumn":0,"endLine":366,"endColumn":3,"executionContextId":1,"hash":"1075785b87e7df6f296abcefccaab1671cd40f19","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"range.js.map","hasSourceURL":false,"isModule":false,"length":15456,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"612","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","startLine":0,"startColumn":0,"endLine":281,"endColumn":3,"executionContextId":1,"hash":"16362ff31290c3233d4340ea1b65557f264bd8e9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleWorker.js.map","hasSourceURL":false,"isModule":false,"length":11716,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","startLine":0,"startColumn":0,"endLine":117,"endColumn":3,"executionContextId":1,"hash":"19aa1e96508bfc5d2ac2a9424115426f31d0977a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"defaultWorkerFactory.js.map","hasSourceURL":false,"isModule":false,"length":5515,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"614","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js","startLine":0,"startColumn":0,"endLine":636,"endColumn":3,"executionContextId":1,"hash":"2e0b8cfb41f8dd3f1212a68e8cd447890a17e799","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languageConfigurationRegistry.js.map","hasSourceURL":false,"isModule":false,"length":32885,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"615","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","startLine":0,"startColumn":0,"endLine":497,"endColumn":3,"executionContextId":1,"hash":"1051f95442369dac0ce71e4506c5505817e689b4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorSimpleWorker.js.map","hasSourceURL":false,"isModule":false,"length":22791,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"616","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"38c07a496d4d07d570377224ba0822815074dfd4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editOperation.js.map","hasSourceURL":false,"isModule":false,"length":1482,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"617","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js","startLine":0,"startColumn":0,"endLine":74,"endColumn":3,"executionContextId":1,"hash":"25e2deb3913033bc162ea02f2f00ce311f954cec","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modesRegistry.js.map","hasSourceURL":false,"isModule":false,"length":3370,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101517,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"618","url":"file:///Users/roblou/code/vscode/out/vs/base/common/stopwatch.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"24f34b0e11316190570ee0c9ca72bc4f57912083","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"stopwatch.js.map","hasSourceURL":false,"isModule":false,"length":1548,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"619","url":"file:///Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":3,"executionContextId":1,"hash":"05339a5c7d86613462da2b75c348752a6245d471","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"undoRedo.js.map","hasSourceURL":false,"isModule":false,"length":1138,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"620","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js","startLine":0,"startColumn":0,"endLine":2199,"endColumn":3,"executionContextId":1,"hash":"2e6cdf43763f108744f2a7e07d4b384322746e1d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorOptions.js.map","hasSourceURL":false,"isModule":false,"length":133331,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"621","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js","startLine":0,"startColumn":0,"endLine":322,"endColumn":3,"executionContextId":1,"hash":"3ca554d83083a70e3c41a0965604b1c701cb469b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editStack.js.map","hasSourceURL":false,"isModule":false,"length":14547,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"622","url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","startLine":0,"startColumn":0,"endLine":281,"endColumn":3,"executionContextId":1,"hash":"2cbec3fc24a2b43f5a0b28391bf20a836b70918d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"hash.js.map","hasSourceURL":false,"isModule":false,"length":12311,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"623","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js","startLine":0,"startColumn":0,"endLine":239,"endColumn":3,"executionContextId":1,"hash":"289dd9fa582705a82010dc72478b6c60609a8deb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"semanticTokensProviderStyling.js.map","hasSourceURL":false,"isModule":false,"length":13487,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"624","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","startLine":0,"startColumn":0,"endLine":141,"endColumn":3,"executionContextId":1,"hash":"2aef5145140dbdd907cca15827ecf3e072da08f8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"position.js.map","hasSourceURL":false,"isModule":false,"length":4715,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"625","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js","startLine":0,"startColumn":0,"endLine":1700,"endColumn":3,"executionContextId":1,"hash":"25f848cf87cb99ff2becdd11c4c64b342cd97528","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffEditorWidget.js.map","hasSourceURL":false,"isModule":false,"length":97844,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.37","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/media/diffEditor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.557819,"wallTime":1588425101.436302,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"626","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js","startLine":0,"startColumn":0,"endLine":1468,"endColumn":3,"executionContextId":1,"hash":"3f2e212d1018bf1a13cb98019e29d5dd23ab9cfb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeEditorWidget.js.map","hasSourceURL":false,"isModule":false,"length":83071,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.38","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/media/editor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.561068,"wallTime":1588425101.439551,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"627","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js","startLine":0,"startColumn":0,"endLine":172,"endColumn":3,"executionContextId":1,"hash":"3f1ece094368aa247581b3a57f5409636d2bade7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffNavigator.js.map","hasSourceURL":false,"isModule":false,"length":6951,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"628","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js","startLine":0,"startColumn":0,"endLine":301,"endColumn":3,"executionContextId":1,"hash":"131372595b319c6127d936250a2b3a1c7de2ad53","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingResolver.js.map","hasSourceURL":false,"isModule":false,"length":11903,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"629","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js","startLine":0,"startColumn":0,"endLine":305,"endColumn":3,"executionContextId":1,"hash":"2077d6db1749984c030177478b46d4a12ec945cd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bracketMatching.js.map","hasSourceURL":false,"isModule":false,"length":16381,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.39","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.563269,"wallTime":1588425101.441752,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"630","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"185099a14d349d2e0d1a7a88918608fc66e53c25","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"transpose.js.map","hasSourceURL":false,"isModule":false,"length":3796,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"631","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js","startLine":0,"startColumn":0,"endLine":193,"endColumn":3,"executionContextId":1,"hash":"1161642f37e55168680cd72421bb457f08c46481","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"clipboard.js.map","hasSourceURL":false,"isModule":false,"length":9210,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"632","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"25c5385d66b446b34b12edad01aaa53454cffeea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"caretOperations.js.map","hasSourceURL":false,"isModule":false,"length":2415,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"633","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js","startLine":0,"startColumn":0,"endLine":1543,"endColumn":3,"executionContextId":1,"hash":"1b72a32d6f94b40f04281d2f688e49117fa245a7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"coreCommands.js.map","hasSourceURL":false,"isModule":false,"length":74073,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"634","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":3,"executionContextId":1,"hash":"3a5dbf2f7fa5d39d2fbf132033a76628634e45de","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionContributions.js.map","hasSourceURL":false,"isModule":false,"length":1463,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"635","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js","startLine":0,"startColumn":0,"endLine":408,"endColumn":3,"executionContextId":1,"hash":"2b814d881ad4c6c060c793e72f891dd577eba746","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codelensController.js.map","hasSourceURL":false,"isModule":false,"length":23089,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"636","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js","startLine":0,"startColumn":0,"endLine":213,"endColumn":3,"executionContextId":1,"hash":"3946a32b72e1504e666e92d487efe85b2f1cebd4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorDetector.js.map","hasSourceURL":false,"isModule":false,"length":11440,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"637","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":3,"executionContextId":1,"hash":"07487bde4fa0e82d18df09e1cd6809f643bb9716","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"comment.js.map","hasSourceURL":false,"isModule":false,"length":6166,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"638","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js","startLine":0,"startColumn":0,"endLine":232,"endColumn":3,"executionContextId":1,"hash":"2981eb0514c03ca617d05dacc58a140a1ac7de41","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextmenu.js.map","hasSourceURL":false,"isModule":false,"length":12520,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"639","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":3,"executionContextId":1,"hash":"0206d7320c31fc937fadc876a545e3aa3381b55c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorUndo.js.map","hasSourceURL":false,"isModule":false,"length":6357,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"640","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js","startLine":0,"startColumn":0,"endLine":788,"endColumn":3,"executionContextId":1,"hash":"0a32c23e645a374c7a94349b96e018a83de3da28","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findController.js.map","hasSourceURL":false,"isModule":false,"length":38538,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"641","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"0d4e373443e22ea150e89d0e01c918d72f61b98e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fontZoom.js.map","hasSourceURL":false,"isModule":false,"length":2395,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"642","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js","startLine":0,"startColumn":0,"endLine":781,"endColumn":3,"executionContextId":1,"hash":"0526aaa52aa9445e4b8a456284ab7762659b3d0e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"folding.js.map","hasSourceURL":false,"isModule":false,"length":42279,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.40","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.573928,"wallTime":1588425101.45241,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"643","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"35b477552de8ef3f33aeb1ad1899075b42dbec78","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"documentSymbols.js.map","hasSourceURL":false,"isModule":false,"length":3418,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"644","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js","startLine":0,"startColumn":0,"endLine":242,"endColumn":3,"executionContextId":1,"hash":"3e84ea0e4a971e9a0fb7cb4555d6c6f979986660","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"formatActions.js.map","hasSourceURL":false,"isModule":false,"length":13616,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"645","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js","startLine":0,"startColumn":0,"endLine":288,"endColumn":3,"executionContextId":1,"hash":"07436fc02e0e0faa7ff68bb31d1eeff81d711498","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"goToDefinitionAtPosition.js.map","hasSourceURL":false,"isModule":false,"length":18453,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101519,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.41","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.576452,"wallTime":1588425101.454935,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"646","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js","startLine":0,"startColumn":0,"endLine":459,"endColumn":3,"executionContextId":1,"hash":"0aa966995dca117d18cffd6e728cd97108e9c566","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gotoError.js.map","hasSourceURL":false,"isModule":false,"length":22636,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"647","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js","startLine":0,"startColumn":0,"endLine":189,"endColumn":3,"executionContextId":1,"hash":"3e345e0014276f057a1612385edd1fd6300f1ee7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dnd.js.map","hasSourceURL":false,"isModule":false,"length":10065,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.42","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.578506,"wallTime":1588425101.456987,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"648","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js","startLine":0,"startColumn":0,"endLine":612,"endColumn":3,"executionContextId":1,"hash":"14a869c46bf89a9f80fe3eb6189bcb3c6e854964","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"goToCommands.js.map","hasSourceURL":false,"isModule":false,"length":33354,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"649","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js","startLine":0,"startColumn":0,"endLine":597,"endColumn":3,"executionContextId":1,"hash":"12af2e389e3f4c952d184a5105657131049cd7a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indentation.js.map","hasSourceURL":false,"isModule":false,"length":31214,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"650","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js","startLine":0,"startColumn":0,"endLine":155,"endColumn":3,"executionContextId":1,"hash":"2f78050f5351f5c433728af87f3f484939aaa613","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inPlaceReplace.js.map","hasSourceURL":false,"isModule":false,"length":8814,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"651","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js","startLine":0,"startColumn":0,"endLine":292,"endColumn":3,"executionContextId":1,"hash":"1c86c598a0f770f6525a478254e9e25a757640fa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"hover.js.map","hasSourceURL":false,"isModule":false,"length":16616,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.43","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.586968,"wallTime":1588425101.46545,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"652","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js","startLine":0,"startColumn":0,"endLine":922,"endColumn":3,"executionContextId":1,"hash":"3813e4ab12551a8f42935a235cbc6bf6007156de","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linesOperations.js.map","hasSourceURL":false,"isModule":false,"length":45579,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"653","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js","startLine":0,"startColumn":0,"endLine":916,"endColumn":3,"executionContextId":1,"hash":"1cabe9917aa6c71f2cd0440e912b12fc4501ffa7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"multicursor.js.map","hasSourceURL":false,"isModule":false,"length":45438,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"654","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js","startLine":0,"startColumn":0,"endLine":299,"endColumn":3,"executionContextId":1,"hash":"2e264c319421953c689ec8a61e164b374d31a95d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"onTypeRename.js.map","hasSourceURL":false,"isModule":false,"length":16179,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.44","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/media/onTypeRename.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.596441,"wallTime":1588425101.474923,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","startLine":0,"startColumn":0,"endLine":344,"endColumn":3,"executionContextId":1,"hash":"1ec9cc067ed9cda56089b3bf3acd049174c3d466","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"links.js.map","hasSourceURL":false,"isModule":false,"length":17883,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.45","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.601269,"wallTime":1588425101.479751,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"656","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js","startLine":0,"startColumn":0,"endLine":111,"endColumn":3,"executionContextId":1,"hash":"1572594917668c46665c75c202fe65d24b79f773","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"parameterHints.js.map","hasSourceURL":false,"isModule":false,"length":6148,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"657","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js","startLine":0,"startColumn":0,"endLine":254,"endColumn":3,"executionContextId":1,"hash":"2511667198cf277f0f6811e3832709dc29e98f2c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"smartSelect.js.map","hasSourceURL":false,"isModule":false,"length":13689,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"658","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js","startLine":0,"startColumn":0,"endLine":646,"endColumn":3,"executionContextId":1,"hash":"0d9aef5372fe57816e3c78c52fca4eb3074cf296","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestController.js.map","hasSourceURL":false,"isModule":false,"length":37144,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"659","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js","startLine":0,"startColumn":0,"endLine":233,"endColumn":3,"executionContextId":1,"hash":"1a66de2b10461c713c521f74009a42a7491f55d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetController2.js.map","hasSourceURL":false,"isModule":false,"length":11902,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"660","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js","startLine":0,"startColumn":0,"endLine":31,"endColumn":3,"executionContextId":1,"hash":"06255ee42cdea97e5e778e1b947245bc69f5cb23","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tokenization.js.map","hasSourceURL":false,"isModule":false,"length":1567,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"661","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":3,"executionContextId":1,"hash":"176ae6b693a3bb2576b87f0d90d2e8ed7fffac8b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewportSemanticTokens.js.map","hasSourceURL":false,"isModule":false,"length":7073,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"662","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js","startLine":0,"startColumn":0,"endLine":43,"endColumn":3,"executionContextId":1,"hash":"1d565769785653897a0ca943c9d2cf7a04c36f49","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleTabFocusMode.js.map","hasSourceURL":false,"isModule":false,"length":2581,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"663","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js","startLine":0,"startColumn":0,"endLine":289,"endColumn":3,"executionContextId":1,"hash":"2b82edeb76c145ab7f8b679c1ef3bf1c46bb2317","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rename.js.map","hasSourceURL":false,"isModule":false,"length":16302,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"664","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js","startLine":0,"startColumn":0,"endLine":437,"endColumn":3,"executionContextId":1,"hash":"0b1fc697639cb0aa133b9fdf6b08675f08b0745d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordOperations.js.map","hasSourceURL":false,"isModule":false,"length":21669,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"665","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js","startLine":0,"startColumn":0,"endLine":539,"endColumn":3,"executionContextId":1,"hash":"1dae4d104e1b137c5efa5494b08dc55f10d62dd0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordHighlighter.js.map","hasSourceURL":false,"isModule":false,"length":28829,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"666","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js","startLine":0,"startColumn":0,"endLine":150,"endColumn":3,"executionContextId":1,"hash":"2dbbb61159cf7ace0aced2d29c276b4d63c2ff1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordPartOperations.js.map","hasSourceURL":false,"isModule":false,"length":7728,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"667","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js","startLine":0,"startColumn":0,"endLine":71,"endColumn":3,"executionContextId":1,"hash":"307f087a05571f0f38782c796908b6715853d54d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"standaloneStrings.js.map","hasSourceURL":false,"isModule":false,"length":7038,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"668","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js","startLine":0,"startColumn":0,"endLine":78,"endColumn":3,"executionContextId":1,"hash":"0b7670f5a43bafa7542f680012667a5f52add116","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonValidationExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":5064,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"669","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"3f8e4526629afbd132e05df784ee1939045b15bd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":7636,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"670","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js","startLine":0,"startColumn":0,"endLine":31,"endColumn":3,"executionContextId":1,"hash":"249d37824e18cdd45e74678d838720e53f89a15c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codiconStyles.js.map","hasSourceURL":false,"isModule":false,"length":1621,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.46","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.614077,"wallTime":1588425101.492558,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.47","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon-modifications.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.614474,"wallTime":1588425101.492955,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.48","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon-animations.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.615007,"wallTime":1588425101.493487,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"671","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js","startLine":0,"startColumn":0,"endLine":203,"endColumn":3,"executionContextId":1,"hash":"1a56245029dc94f7273359f43ab5f7cf7a62ff0b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tokenClassificationExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":12495,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"672","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"33df71406f2a2d22047ee97c9bbdde4d55197136","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadCodeInsets.js.map","hasSourceURL":false,"isModule":false,"length":6795,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"673","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js","startLine":0,"startColumn":0,"endLine":106,"endColumn":3,"executionContextId":1,"hash":"1e22f6284596bd5276878d3bccc8452d247eb1f3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadCommands.js.map","hasSourceURL":false,"isModule":false,"length":5738,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"674","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":3,"executionContextId":1,"hash":"3210b9026cc9ce117e7a99f73902727f0eb69360","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadConfiguration.js.map","hasSourceURL":false,"isModule":false,"length":7892,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"675","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js","startLine":0,"startColumn":0,"endLine":556,"endColumn":3,"executionContextId":1,"hash":"1a6a5d1a41c943d03273d67b6f0787251b42a834","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languageConfigurationExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":31360,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"676","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"1e06b8c58895505d101a261a7f5851a543391fee","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadClipboard.js.map","hasSourceURL":false,"isModule":false,"length":2426,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101521,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"26bd8e079a1da43118f91af7bb4f552950fbbf18","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadConsole.js.map","hasSourceURL":false,"isModule":false,"length":3906,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"678","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js","startLine":0,"startColumn":0,"endLine":352,"endColumn":3,"executionContextId":1,"hash":"0a6519fb44e68ba152b4457366273b6f808ba9cd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDebugService.js.map","hasSourceURL":false,"isModule":false,"length":18879,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"679","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":3,"executionContextId":1,"hash":"1aca97a65f03cf2133a3caa89d641ad74ef46024","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDiagnostics.js.map","hasSourceURL":false,"isModule":false,"length":4204,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"680","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js","startLine":0,"startColumn":0,"endLine":118,"endColumn":3,"executionContextId":1,"hash":"057e3ead2cd549383432707eca0d9eaf4ec2996e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDecorations.js.map","hasSourceURL":false,"isModule":false,"length":5962,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"681","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"0da5dc3b13c88e1513f021311e55b0d45ffa8499","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDialogs.js.map","hasSourceURL":false,"isModule":false,"length":4140,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"682","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":3,"executionContextId":1,"hash":"04b26c67618f4dc45bd6409e0bf4ecc14766351d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDocumentContentProviders.js.map","hasSourceURL":false,"isModule":false,"length":6168,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"683","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js","startLine":0,"startColumn":0,"endLine":201,"endColumn":3,"executionContextId":1,"hash":"2198de2e17de81617c8bfeba590834852eb81373","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDocuments.js.map","hasSourceURL":false,"isModule":false,"length":10959,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"684","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js","startLine":0,"startColumn":0,"endLine":383,"endColumn":3,"executionContextId":1,"hash":"0618a724444a06513d5207b5357466593df543e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDocumentsAndEditors.js.map","hasSourceURL":false,"isModule":false,"length":22138,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"685","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js","startLine":0,"startColumn":0,"endLine":269,"endColumn":3,"executionContextId":1,"hash":"197f8cf5499c92ec317800a1520bf683260e861b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadEditors.js.map","hasSourceURL":false,"isModule":false,"length":16284,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"686","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js","startLine":0,"startColumn":0,"endLine":381,"endColumn":3,"executionContextId":1,"hash":"35e14daf0465eaff521eaccb0ecc428462e56c21","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadEditor.js.map","hasSourceURL":false,"isModule":false,"length":17177,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"687","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js","startLine":0,"startColumn":0,"endLine":198,"endColumn":3,"executionContextId":1,"hash":"076f69824dc7331d4851844c7a9176d027fc0df0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadFileSystem.js.map","hasSourceURL":false,"isModule":false,"length":10048,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"688","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":3,"executionContextId":1,"hash":"0f9ea25d23a9eb3841c0e01fbc53198e13b7596f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadErrors.js.map","hasSourceURL":false,"isModule":false,"length":2192,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"689","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"3aa725f996c369c90bc8a0a22019e85f26652621","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadFileSystemEventService.js.map","hasSourceURL":false,"isModule":false,"length":5606,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"690","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"331bca4f8a7b054023ed395074c834320959d254","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadKeytar.js.map","hasSourceURL":false,"isModule":false,"length":2913,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101522,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"691","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js","startLine":0,"startColumn":0,"endLine":657,"endColumn":3,"executionContextId":1,"hash":"159effcf6d182df301f80a578db16d8b33c2fdf6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadLanguageFeatures.js.map","hasSourceURL":false,"isModule":false,"length":36114,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"692","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js","startLine":0,"startColumn":0,"endLine":53,"endColumn":3,"executionContextId":1,"hash":"358c183d24d6a71a63d6e0464bd01fc030a2d75e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadLanguages.js.map","hasSourceURL":false,"isModule":false,"length":3257,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"693","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"1165ff9c138d5964146b8b8a220b329321df41c4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadLogService.js.map","hasSourceURL":false,"isModule":false,"length":3485,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"694","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":3,"executionContextId":1,"hash":"1fdf3f2601dc31004ccec71e095675b645eee25b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadMessageService.js.map","hasSourceURL":false,"isModule":false,"length":6675,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"695","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"378c00b76be83182270c197805803a18575679b0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadExtensionService.js.map","hasSourceURL":false,"isModule":false,"length":9342,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"696","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"162434745d7563d42a7ffd70acaf4fdc32be1e7d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadProgress.js.map","hasSourceURL":false,"isModule":false,"length":4346,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"697","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"0f578c53155f50e4148b81657061532f590616e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadSaveParticipant.js.map","hasSourceURL":false,"isModule":false,"length":3930,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"698","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js","startLine":0,"startColumn":0,"endLine":97,"endColumn":3,"executionContextId":1,"hash":"31072bff22db025c655e659166c464864de5d862","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadOutputService.js.map","hasSourceURL":false,"isModule":false,"length":5633,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"699","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js","startLine":0,"startColumn":0,"endLine":155,"endColumn":3,"executionContextId":1,"hash":"3c73e76841eb595435663d31285e504c526f9b75","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadSearch.js.map","hasSourceURL":false,"isModule":false,"length":7803,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"700","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"0511bef0805d7aa3588fdb3b553073047ef5dc27","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadStorage.js.map","hasSourceURL":false,"isModule":false,"length":4028,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"701","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js","startLine":0,"startColumn":0,"endLine":333,"endColumn":3,"executionContextId":1,"hash":"02805f178f55b6ab6a3ce5c14ad8fcd24a13d06d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadSCM.js.map","hasSourceURL":false,"isModule":false,"length":16429,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"702","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"2bf044510bcb6e2d57bbf49f76026bd04bb78622","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadQuickOpen.js.map","hasSourceURL":false,"isModule":false,"length":10383,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"703","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"07c715216f690c314543e9086427e2a21641e773","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadStatusBar.js.map","hasSourceURL":false,"isModule":false,"length":3917,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.34","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.637894,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/media/part.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.34","timestamp":547783.63803,"dataLength":2644,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.34","timestamp":547783.638176,"encodedDataLength":2644,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.35","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.638638,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.35","timestamp":547783.63871,"dataLength":408,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.35","timestamp":547783.638783,"encodedDataLength":408,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.36","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.639133,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.36","timestamp":547783.639263,"dataLength":2982,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.36","timestamp":547783.639315,"encodedDataLength":2982,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.37","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.639684,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/media/diffEditor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101523,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.37","timestamp":547783.639761,"dataLength":2098,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.37","timestamp":547783.639837,"encodedDataLength":2098,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.38","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.640241,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/media/editor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.38","timestamp":547783.640283,"dataLength":987,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.38","timestamp":547783.640347,"encodedDataLength":987,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.39","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.640649,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.39","timestamp":547783.640695,"dataLength":412,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.39","timestamp":547783.640808,"encodedDataLength":412,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.40","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.641151,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.40","timestamp":547783.641269,"dataLength":1011,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.40","timestamp":547783.641321,"encodedDataLength":1011,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.41","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.641705,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.41","timestamp":547783.641773,"dataLength":440,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.41","timestamp":547783.641865,"encodedDataLength":440,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.42","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.642189,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.42","timestamp":547783.642299,"dataLength":1017,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.42","timestamp":547783.642348,"encodedDataLength":1017,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.43","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.642699,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.43","timestamp":547783.642763,"dataLength":2926,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101524,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.43","timestamp":547783.642839,"encodedDataLength":2926,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101525,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101525,"metadata":{"connectionId":1,"message":{"seq":514,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js","sourceReference":440920539}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425101525,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.44","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.643223,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/media/onTypeRename.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101525,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.44","timestamp":547783.643322,"dataLength":547,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101525,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.44","timestamp":547783.643376,"encodedDataLength":547,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101525,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.45","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.643721,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.45","timestamp":547783.643852,"dataLength":546,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.45","timestamp":547783.643906,"encodedDataLength":546,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.46","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.644216,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.46","timestamp":547783.64428,"dataLength":848,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.46","timestamp":547783.64435,"encodedDataLength":848,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.47","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.644697,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon-modifications.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.47","timestamp":547783.644739,"dataLength":398,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.47","timestamp":547783.644818,"encodedDataLength":398,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.48","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547783.64512,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon-animations.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.48","timestamp":547783.645208,"dataLength":552,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101526,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.48","timestamp":547783.645273,"encodedDataLength":552,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101526,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js"},"level":0} {"tag":"dap.send","timestamp":1588425101526,"metadata":{"connectionId":1,"message":{"seq":515,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js","sourceReference":112962323}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101527,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101527,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/views/browser/viewDescriptorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.ts","sourceMapSources":["vs/workbench/services/views/browser/viewDescriptorService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101527,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101527,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts","sourceMapSources":["vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101528,"metadata":{"connectionId":1,"message":{"seq":516,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js","sourceReference":736105681}}}},"level":0} {"tag":"dap.send","timestamp":1588425101528,"metadata":{"connectionId":1,"message":{"seq":517,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101528,"metadata":{"connectionId":1,"message":{"seq":518,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101528,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101528,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/quickinput/browser/quickInputService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/quickinput/browser/quickInputService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/quickinput/browser/quickInputService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/quickinput/browser/quickInputService.ts","sourceMapSources":["vs/workbench/services/quickinput/browser/quickInputService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101529,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101529,"metadata":{"connectionId":1,"message":{"seq":519,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/quickinput/browser/quickInputService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/quickinput/browser/quickInputService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101529,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101529,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101530,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101530,"metadata":{"connectionId":1,"message":{"seq":520,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101530,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101530,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/userDataSync/common/userDataSyncUtil.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/userDataSync/common/userDataSyncUtil.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.ts","sourceMapSources":["vs/workbench/services/userDataSync/common/userDataSyncUtil.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101531,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101532,"metadata":{"connectionId":1,"message":{"seq":521,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101532,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js"},"level":0} {"tag":"dap.send","timestamp":1588425101532,"metadata":{"connectionId":1,"message":{"seq":522,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","sourceReference":1758132031}}}},"level":0} {"tag":"dap.send","timestamp":1588425101532,"metadata":{"connectionId":1,"message":{"seq":523,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js","sourceReference":75079007}}}},"level":0} {"tag":"dap.send","timestamp":1588425101533,"metadata":{"connectionId":1,"message":{"seq":524,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js","sourceReference":667986324}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101533,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101536,"metadata":{"connectionId":1,"message":{"seq":525,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js","sourceReference":1217812184}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101631,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101631,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebook.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebook.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101631,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js"},"level":0} {"tag":"dap.send","timestamp":1588425101638,"metadata":{"connectionId":1,"message":{"seq":526,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js","sourceReference":1525398791}}}},"level":0} {"tag":"dap.send","timestamp":1588425101638,"metadata":{"connectionId":1,"message":{"seq":527,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js","sourceReference":446932185}}}},"level":0} {"tag":"dap.send","timestamp":1588425101643,"metadata":{"connectionId":1,"message":{"seq":528,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101644,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101644,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts","sourceMapSources":["vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101644,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101644,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/logs/common/logs.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logs.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logs.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logs.contribution.ts","sourceMapSources":["vs/workbench/contrib/logs/common/logs.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101650,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101651,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101652,"metadata":{"connectionId":1,"message":{"seq":529,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101652,"metadata":{"connectionId":1,"message":{"seq":530,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logs.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logs.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101652,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101652,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/preferencesSearch.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesSearch.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/preferencesSearch.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101652,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101653,"metadata":{"connectionId":1,"message":{"seq":531,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js","sourceReference":601192496}}}},"level":0} {"tag":"dap.send","timestamp":1588425101653,"metadata":{"connectionId":1,"message":{"seq":532,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js","sourceReference":2077582429}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101653,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101653,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/files.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.contribution.ts","sourceMapSources":["vs/workbench/contrib/files/browser/files.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101653,"metadata":{"connectionId":1,"message":{"seq":533,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101654,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101654,"metadata":{"connectionId":1,"message":{"seq":534,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101655,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101655,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/explorerViewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.ts","sourceMapSources":["vs/workbench/contrib/files/browser/explorerViewlet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101655,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101655,"metadata":{"connectionId":1,"message":{"seq":535,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js","sourceReference":1998470543}}}},"level":0} {"tag":"dap.send","timestamp":1588425101656,"metadata":{"connectionId":1,"message":{"seq":536,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101656,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101656,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/backup/common/backup.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backup.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backup.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backup.contribution.ts","sourceMapSources":["vs/workbench/contrib/backup/common/backup.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101656,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101656,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/fileActions.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts","sourceMapSources":["vs/workbench/contrib/files/browser/fileActions.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101656,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js"},"level":0} {"tag":"dap.send","timestamp":1588425101657,"metadata":{"connectionId":1,"message":{"seq":537,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backup.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backup.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101657,"metadata":{"connectionId":1,"message":{"seq":538,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101657,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101657,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.ts","sourceMapSources":["vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101657,"metadata":{"connectionId":1,"message":{"seq":539,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js","sourceReference":836648740}}}},"level":0} {"tag":"dap.send","timestamp":1588425101657,"metadata":{"connectionId":1,"message":{"seq":540,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js","sourceReference":1438426026}}}},"level":0} {"tag":"dap.send","timestamp":1588425101658,"metadata":{"connectionId":1,"message":{"seq":541,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEdit.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101658,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101659,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101659,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/search.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/search.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/search.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/search.contribution.ts","sourceMapSources":["vs/workbench/contrib/search/browser/search.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101659,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101659,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts","sourceMapSources":["vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101659,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js"},"level":0} {"tag":"dap.send","timestamp":1588425101659,"metadata":{"connectionId":1,"message":{"seq":542,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/search.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/search.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101660,"metadata":{"connectionId":1,"message":{"seq":543,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101660,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101660,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/searchView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchView.ts","sourceMapSources":["vs/workbench/contrib/search/browser/searchView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101660,"metadata":{"connectionId":1,"message":{"seq":544,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101661,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101661,"metadata":{"connectionId":1,"message":{"seq":545,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js","sourceReference":1202564996}}}},"level":0} {"tag":"dap.send","timestamp":1588425101661,"metadata":{"connectionId":1,"message":{"seq":546,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js","sourceReference":1960662994}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101661,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101661,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/scm.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scm.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/scm.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101662,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101662,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/scmViewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/scmViewlet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101662,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101662,"metadata":{"connectionId":1,"message":{"seq":547,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101663,"metadata":{"connectionId":1,"message":{"seq":548,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101663,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101663,"metadata":{"connectionId":1,"message":{"seq":549,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","sourceReference":1169533208}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101675,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101675,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101676,"metadata":{"connectionId":1,"message":{"seq":550,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js","sourceReference":1010302003}}}},"level":0} {"tag":"dap.send","timestamp":1588425101676,"metadata":{"connectionId":1,"message":{"seq":551,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js","sourceReference":666728035}}}},"level":0} {"tag":"dap.send","timestamp":1588425101676,"metadata":{"connectionId":1,"message":{"seq":552,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js","sourceReference":647645186}}}},"level":0} {"tag":"dap.send","timestamp":1588425101677,"metadata":{"connectionId":1,"message":{"seq":553,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101677,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101677,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/callStackEditorContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackEditorContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/callStackEditorContribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101677,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101678,"metadata":{"connectionId":1,"message":{"seq":554,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101679,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101679,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debug.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debug.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debug.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101679,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101680,"metadata":{"connectionId":1,"message":{"seq":555,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101680,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js"},"level":0} {"tag":"dap.send","timestamp":1588425101681,"metadata":{"connectionId":1,"message":{"seq":556,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js","sourceReference":1739719793}}}},"level":0} {"tag":"dap.send","timestamp":1588425101681,"metadata":{"connectionId":1,"message":{"seq":557,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js","sourceReference":215563775}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101682,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101682,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markers.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.contribution.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markers.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101682,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101683,"metadata":{"connectionId":1,"message":{"seq":558,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101683,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101683,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugEditorContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugEditorContribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101683,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101684,"metadata":{"connectionId":1,"message":{"seq":559,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101684,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101684,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/repl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/repl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/repl.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/repl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101684,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101684,"metadata":{"connectionId":1,"message":{"seq":560,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/repl.js","sourceReference":986671648}}}},"level":0} {"tag":"dap.send","timestamp":1588425101684,"metadata":{"connectionId":1,"message":{"seq":561,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js","sourceReference":1693987921}}}},"level":0} {"tag":"dap.send","timestamp":1588425101685,"metadata":{"connectionId":1,"message":{"seq":562,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js","sourceReference":798279363}}}},"level":0} {"tag":"dap.send","timestamp":1588425101685,"metadata":{"connectionId":1,"message":{"seq":563,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/repl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/repl.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101686,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js"},"level":0} {"tag":"dap.send","timestamp":1588425101686,"metadata":{"connectionId":1,"message":{"seq":564,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js","sourceReference":487361159}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101686,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101686,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webview.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webview.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101687,"metadata":{"connectionId":1,"message":{"seq":565,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101687,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101687,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/comments.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/comments.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/comments.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101687,"metadata":{"connectionId":1,"message":{"seq":566,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101688,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101688,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/url/common/url.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/url.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/url.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/url.contribution.ts","sourceMapSources":["vs/workbench/contrib/url/common/url.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101688,"metadata":{"connectionId":1,"message":{"seq":567,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js","sourceReference":562584459}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101688,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101689,"metadata":{"connectionId":1,"message":{"seq":568,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/url.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/url.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101689,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101689,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugViewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugViewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugViewlet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101689,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101689,"metadata":{"connectionId":1,"message":{"seq":569,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101690,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js"},"level":0} {"tag":"dap.send","timestamp":1588425101690,"metadata":{"connectionId":1,"message":{"seq":570,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js","sourceReference":563878651}}}},"level":0} {"tag":"dap.send","timestamp":1588425101690,"metadata":{"connectionId":1,"message":{"seq":571,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js","sourceReference":1187275896}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101691,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101701,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101701,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensions.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensions.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensions.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101701,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101701,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts","sourceMapSources":["vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101701,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js"},"level":0} {"tag":"dap.send","timestamp":1588425101702,"metadata":{"connectionId":1,"message":{"seq":572,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js","sourceReference":914443694}}}},"level":0} {"tag":"dap.send","timestamp":1588425101702,"metadata":{"connectionId":1,"message":{"seq":573,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js","sourceReference":1027515461}}}},"level":0} {"tag":"dap.send","timestamp":1588425101705,"metadata":{"connectionId":1,"message":{"seq":574,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101705,"metadata":{"connectionId":1,"message":{"seq":575,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101705,"metadata":{"connectionId":1,"message":{"seq":576,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js","sourceReference":1924677780}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101709,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101710,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101710,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/output/browser/outputView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputView.ts","sourceMapSources":["vs/workbench/contrib/output/browser/outputView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101710,"metadata":{"connectionId":1,"message":{"seq":577,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101710,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101710,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/output/browser/output.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/output.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/output.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/output.contribution.ts","sourceMapSources":["vs/workbench/contrib/output/browser/output.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101710,"metadata":{"connectionId":1,"message":{"seq":578,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/output.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/output.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101711,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101711,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsViewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsViewlet.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101711,"metadata":{"connectionId":1,"message":{"seq":579,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js","sourceReference":2036358886}}}},"level":0} {"tag":"dap.send","timestamp":1588425101711,"metadata":{"connectionId":1,"message":{"seq":580,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101711,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101711,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminal.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminal.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101712,"metadata":{"connectionId":1,"message":{"seq":581,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101712,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101713,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101713,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/environmentVariable.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.contribution.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/environmentVariable.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101714,"metadata":{"connectionId":1,"message":{"seq":582,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.contribution.js","sourceReference":1975773005}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101714,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101714,"metadata":{"connectionId":1,"message":{"seq":583,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101714,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101715,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101715,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/browser/task.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution.ts","sourceMapSources":["vs/workbench/contrib/tasks/browser/task.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101715,"metadata":{"connectionId":1,"message":{"seq":584,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101715,"metadata":{"connectionId":1,"message":{"seq":585,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/task.contribution.js","sourceReference":648682725}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101716,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js"},"level":0} {"tag":"dap.send","timestamp":1588425101716,"metadata":{"connectionId":1,"message":{"seq":586,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js","sourceReference":487715851}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101717,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101717,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/common/remote.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/remote.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.ts","sourceMapSources":["vs/workbench/contrib/remote/common/remote.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101717,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101718,"metadata":{"connectionId":1,"message":{"seq":587,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101718,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js"},"level":0} {"tag":"dap.send","timestamp":1588425101718,"metadata":{"connectionId":1,"message":{"seq":588,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js","sourceReference":1693740423}}}},"level":0} {"tag":"dap.send","timestamp":1588425101718,"metadata":{"connectionId":1,"message":{"seq":589,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js","sourceReference":700512083}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101719,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101719,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalView.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101719,"metadata":{"connectionId":1,"message":{"seq":590,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101719,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101719,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts","sourceMapSources":["vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101720,"metadata":{"connectionId":1,"message":{"seq":591,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101720,"metadata":{"connectionId":1,"message":{"seq":592,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js","sourceReference":1710121152}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101720,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101721,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101721,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/browser/remote.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remote.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remote.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remote.ts","sourceMapSources":["vs/workbench/contrib/remote/browser/remote.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101721,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101721,"metadata":{"connectionId":1,"message":{"seq":593,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remote.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remote.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101721,"metadata":{"connectionId":1,"message":{"seq":594,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js","sourceReference":79725987}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101722,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101722,"metadata":{"connectionId":1,"message":{"seq":595,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js","sourceReference":192134291}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101723,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101723,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101723,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101724,"metadata":{"connectionId":1,"message":{"seq":596,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101724,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101724,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.ts","sourceMapSources":["vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101724,"metadata":{"connectionId":1,"message":{"seq":597,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js","sourceReference":2130560837}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101724,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101724,"metadata":{"connectionId":1,"message":{"seq":598,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101725,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js"},"level":0} {"tag":"dap.send","timestamp":1588425101725,"metadata":{"connectionId":1,"message":{"seq":599,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js","sourceReference":1299336980}}}},"level":0} {"tag":"dap.send","timestamp":1588425101725,"metadata":{"connectionId":1,"message":{"seq":600,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js","sourceReference":1729190907}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101729,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101729,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/snippets.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippets.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/snippets.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101730,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101730,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js"},"level":0} {"tag":"dap.send","timestamp":1588425101730,"metadata":{"connectionId":1,"message":{"seq":601,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js","sourceReference":1097541415}}}},"level":0} {"tag":"dap.send","timestamp":1588425101730,"metadata":{"connectionId":1,"message":{"seq":602,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101731,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101731,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101731,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/snippetsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/snippetsService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101732,"metadata":{"connectionId":1,"message":{"seq":603,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js","sourceReference":342284841}}}},"level":0} {"tag":"dap.send","timestamp":1588425101732,"metadata":{"connectionId":1,"message":{"seq":604,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js","sourceReference":1390163281}}}},"level":0} {"tag":"dap.send","timestamp":1588425101732,"metadata":{"connectionId":1,"message":{"seq":605,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js","sourceReference":1982637806}}}},"level":0} {"tag":"dap.send","timestamp":1588425101732,"metadata":{"connectionId":1,"message":{"seq":606,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101732,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101732,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/emmet/browser/emmet.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmet.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmet.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmet.contribution.ts","sourceMapSources":["vs/workbench/contrib/emmet/browser/emmet.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101733,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101733,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/insertSnippet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/insertSnippet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/insertSnippet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/insertSnippet.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/insertSnippet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101733,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101734,"metadata":{"connectionId":1,"message":{"seq":607,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmet.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmet.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101734,"metadata":{"connectionId":1,"message":{"seq":608,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/insertSnippet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/insertSnippet.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101734,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101734,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/configureSnippets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/configureSnippets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/configureSnippets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/configureSnippets.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/configureSnippets.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101734,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101734,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/tabCompletion.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/tabCompletion.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/tabCompletion.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101734,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101735,"metadata":{"connectionId":1,"message":{"seq":609,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/configureSnippets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/configureSnippets.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101735,"metadata":{"connectionId":1,"message":{"seq":610,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101735,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js"},"level":0} {"tag":"dap.send","timestamp":1588425101736,"metadata":{"connectionId":1,"message":{"seq":611,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js","sourceReference":2034854290}}}},"level":0} {"tag":"dap.send","timestamp":1588425101736,"metadata":{"connectionId":1,"message":{"seq":612,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js","sourceReference":384510848}}}},"level":0} {"tag":"dap.send","timestamp":1588425101736,"metadata":{"connectionId":1,"message":{"seq":613,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js","sourceReference":991680358}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101736,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101736,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/format/browser/format.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/format.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/format.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/format.contribution.ts","sourceMapSources":["vs/workbench/contrib/format/browser/format.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101743,"metadata":{"connectionId":1,"message":{"seq":614,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/format.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/format.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101743,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101743,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/themes/browser/themes.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/themes/browser/themes.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.ts","sourceMapSources":["vs/workbench/contrib/themes/browser/themes.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101743,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101744,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101744,"metadata":{"connectionId":1,"message":{"seq":615,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101745,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101745,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/update/browser/update.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.contribution.ts","sourceMapSources":["vs/workbench/contrib/update/browser/update.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101745,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js"},"level":0} {"tag":"dap.send","timestamp":1588425101745,"metadata":{"connectionId":1,"message":{"seq":616,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101746,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101746,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/watermark/browser/watermark.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/watermark/browser/watermark.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/watermark/browser/watermark.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/watermark/browser/watermark.ts","sourceMapSources":["vs/workbench/contrib/watermark/browser/watermark.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101746,"metadata":{"connectionId":1,"message":{"seq":617,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js","sourceReference":88005621}}}},"level":0} {"tag":"dap.send","timestamp":1588425101746,"metadata":{"connectionId":1,"message":{"seq":618,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js","sourceReference":121515043}}}},"level":0} {"tag":"dap.send","timestamp":1588425101746,"metadata":{"connectionId":1,"message":{"seq":619,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/watermark/browser/watermark.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/watermark/browser/watermark.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101746,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101747,"metadata":{"connectionId":1,"message":{"seq":620,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js","sourceReference":1567922287}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101747,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101747,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/surveys/browser/nps.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/nps.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/nps.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/nps.contribution.ts","sourceMapSources":["vs/workbench/contrib/surveys/browser/nps.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101748,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101748,"metadata":{"connectionId":1,"message":{"seq":621,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js","sourceReference":1894275081}}}},"level":0} {"tag":"dap.send","timestamp":1588425101749,"metadata":{"connectionId":1,"message":{"seq":622,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/nps.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/nps.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101749,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101749,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts","sourceMapSources":["vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101750,"metadata":{"connectionId":1,"message":{"seq":623,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js","sourceReference":1687341691}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101750,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101751,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101751,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.ts","sourceMapSources":["vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101751,"metadata":{"connectionId":1,"message":{"seq":624,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101752,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101752,"metadata":{"connectionId":1,"message":{"seq":625,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101752,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101752,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts","sourceMapSources":["vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101752,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101753,"metadata":{"connectionId":1,"message":{"seq":626,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js","sourceReference":1046559351}}}},"level":0} {"tag":"dap.send","timestamp":1588425101753,"metadata":{"connectionId":1,"message":{"seq":627,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js","sourceReference":2079016449}}}},"level":0} {"tag":"dap.send","timestamp":1588425101753,"metadata":{"connectionId":1,"message":{"seq":628,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101754,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101754,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts","sourceMapSources":["vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101754,"metadata":{"connectionId":1,"message":{"seq":629,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js","sourceReference":1630039290}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101754,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101754,"metadata":{"connectionId":1,"message":{"seq":630,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101756,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101756,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/experiments/browser/experiments.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experiments.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experiments.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experiments.contribution.ts","sourceMapSources":["vs/workbench/contrib/experiments/browser/experiments.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101756,"metadata":{"connectionId":1,"message":{"seq":631,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js","sourceReference":10694355}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101762,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101762,"metadata":{"connectionId":1,"message":{"seq":632,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experiments.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experiments.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101763,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101763,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/outline/browser/outline.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outline.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution.ts","sourceMapSources":["vs/workbench/contrib/outline/browser/outline.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101763,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101763,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/feedback/browser/feedback.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.contribution.ts","sourceMapSources":["vs/workbench/contrib/feedback/browser/feedback.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101763,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101764,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425101764,"metadata":{"connectionId":1,"message":{"seq":633,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101764,"metadata":{"connectionId":1,"message":{"seq":634,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101764,"metadata":{"connectionId":1,"message":{"seq":635,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js","sourceReference":467993570}}}},"level":0} {"tag":"dap.send","timestamp":1588425101764,"metadata":{"connectionId":1,"message":{"seq":636,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js","path":"/Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js","sourceReference":495171276}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101765,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101765,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101765,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.ts","sourceMapSources":["vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101766,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101766,"metadata":{"connectionId":1,"message":{"seq":637,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101766,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425101767,"metadata":{"connectionId":1,"message":{"seq":638,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js","path":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js","sourceReference":732632501}}}},"level":0} {"tag":"dap.send","timestamp":1588425101767,"metadata":{"connectionId":1,"message":{"seq":639,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js","sourceReference":103366424}}}},"level":0} {"tag":"dap.send","timestamp":1588425101767,"metadata":{"connectionId":1,"message":{"seq":640,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js","sourceReference":2117858391}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101767,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101767,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101768,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101768,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/registry/common/platform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/registry/common/platform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/registry/common/platform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/registry/common/platform.ts","sourceMapSources":["vs/platform/registry/common/platform.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101768,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js"},"level":0} {"tag":"dap.send","timestamp":1588425101769,"metadata":{"connectionId":1,"message":{"seq":641,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThrough.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101769,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101769,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/configuration/common/configurationRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationRegistry.ts","sourceMapSources":["vs/platform/configuration/common/configurationRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101769,"metadata":{"connectionId":1,"message":{"seq":642,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/registry/common/platform.ts","path":"/Users/roblou/code/vscode/src/vs/platform/registry/common/platform.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101769,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/actions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/actions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101770,"metadata":{"connectionId":1,"message":{"seq":643,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js","sourceReference":595715968}}}},"level":0} {"tag":"dap.send","timestamp":1588425101770,"metadata":{"connectionId":1,"message":{"seq":644,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js","path":"/Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js","sourceReference":718956541}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101770,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101770,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/timeline/browser/timeline.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timeline.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.ts","sourceMapSources":["vs/workbench/contrib/timeline/browser/timeline.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101770,"metadata":{"connectionId":1,"message":{"seq":645,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101770,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425101771,"metadata":{"connectionId":1,"message":{"seq":646,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/actions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/actions.js","sourceReference":1227670237}}}},"level":0} {"tag":"dap.send","timestamp":1588425101771,"metadata":{"connectionId":1,"message":{"seq":647,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101772,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101772,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeActions/common/codeActions.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActions.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActions.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActions.contribution.ts","sourceMapSources":["vs/workbench/contrib/codeActions/common/codeActions.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101772,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101772,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/common/viewsWelcome.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.ts","sourceMapSources":["vs/workbench/contrib/welcome/common/viewsWelcome.contribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101772,"metadata":{"connectionId":1,"message":{"seq":648,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js","sourceReference":1521508138}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101772,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101773,"metadata":{"connectionId":1,"message":{"seq":649,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActions.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActions.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101773,"metadata":{"connectionId":1,"message":{"seq":650,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcome.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101773,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101773,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/commands/common/commands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/commands/common/commands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/commands/common/commands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/commands/common/commands.ts","sourceMapSources":["vs/platform/commands/common/commands.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101774,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425101774,"metadata":{"connectionId":1,"message":{"seq":651,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/commands/common/commands.ts","path":"/Users/roblou/code/vscode/src/vs/platform/commands/common/commands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101774,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101774,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/actions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/actions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/actions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/actions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/actions.ts","sourceMapSources":["vs/workbench/common/actions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101775,"metadata":{"connectionId":1,"message":{"seq":652,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js","sourceReference":780951594}}}},"level":0} {"tag":"dap.send","timestamp":1588425101775,"metadata":{"connectionId":1,"message":{"seq":653,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js","path":"/Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js","sourceReference":1921463781}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101775,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/product/common/product.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/product/common/product.js"},"level":0} {"tag":"dap.send","timestamp":1588425101775,"metadata":{"connectionId":1,"message":{"seq":654,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/actions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101776,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101776,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/keybindingsRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingsRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry.ts","sourceMapSources":["vs/platform/keybinding/common/keybindingsRegistry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101776,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js"},"level":0} {"tag":"dap.send","timestamp":1588425101777,"metadata":{"connectionId":1,"message":{"seq":655,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101777,"metadata":{"connectionId":1,"message":{"seq":656,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/product/common/product.js","path":"/Users/roblou/code/vscode/out/vs/platform/product/common/product.js","sourceReference":225738747}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101777,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101777,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101777,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/electron-browser/actions/developerActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/developerActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/developerActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/developerActions.ts","sourceMapSources":["vs/workbench/electron-browser/actions/developerActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101778,"metadata":{"connectionId":1,"message":{"seq":657,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js","sourceReference":417326733}}}},"level":0} {"tag":"dap.send","timestamp":1588425101778,"metadata":{"connectionId":1,"message":{"seq":658,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js","path":"/Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js","sourceReference":1593612209}}}},"level":0} {"tag":"dap.send","timestamp":1588425101778,"metadata":{"connectionId":1,"message":{"seq":659,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/developerActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/developerActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101778,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101778,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/jsonschemas/common/jsonContributionRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/jsonschemas/common/jsonContributionRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/jsonschemas/common/jsonContributionRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/jsonschemas/common/jsonContributionRegistry.ts","sourceMapSources":["vs/platform/jsonschemas/common/jsonContributionRegistry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101779,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101779,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101779,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/product/common/product.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/product/common/product.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/product/common/product.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/product/common/product.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/product/common/product.ts","sourceMapSources":["vs/platform/product/common/product.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101779,"metadata":{"connectionId":1,"message":{"seq":660,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/jsonschemas/common/jsonContributionRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/jsonschemas/common/jsonContributionRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101780,"metadata":{"connectionId":1,"message":{"seq":661,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/product/common/product.ts","path":"/Users/roblou/code/vscode/src/vs/platform/product/common/product.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101780,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101780,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextkey/common/contextkeys.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextkey/common/contextkeys.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkeys.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkeys.ts","sourceMapSources":["vs/platform/contextkey/common/contextkeys.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101780,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101781,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101781,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/dialogs/common/dialogs.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/dialogs/common/dialogs.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/dialogs/common/dialogs.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/dialogs/common/dialogs.ts","sourceMapSources":["vs/platform/dialogs/common/dialogs.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101781,"metadata":{"connectionId":1,"message":{"seq":662,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkeys.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextkey/common/contextkeys.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101781,"metadata":{"connectionId":1,"message":{"seq":663,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor.js","sourceReference":585224287}}}},"level":0} {"tag":"dap.send","timestamp":1588425101782,"metadata":{"connectionId":1,"message":{"seq":664,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/dialogs/common/dialogs.ts","path":"/Users/roblou/code/vscode/src/vs/platform/dialogs/common/dialogs.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101782,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uri.js"},"level":0} {"tag":"dap.send","timestamp":1588425101782,"metadata":{"connectionId":1,"message":{"seq":665,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js","sourceReference":1822763962}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101783,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101783,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor.ts","sourceMapSources":["vs/workbench/common/editor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101783,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/files.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/common/files.js"},"level":0} {"tag":"dap.send","timestamp":1588425101784,"metadata":{"connectionId":1,"message":{"seq":666,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101784,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/network.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/network.js"},"level":0} {"tag":"dap.send","timestamp":1588425101784,"metadata":{"connectionId":1,"message":{"seq":667,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uri.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uri.js","sourceReference":673660165}}}},"level":0} {"tag":"dap.send","timestamp":1588425101784,"metadata":{"connectionId":1,"message":{"seq":668,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/common/files.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/common/files.js","sourceReference":212191311}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101785,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101785,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/electron-browser/actions/windowActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/actions/windowActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/windowActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/windowActions.ts","sourceMapSources":["vs/workbench/electron-browser/actions/windowActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101785,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js"},"level":0} {"tag":"dap.send","timestamp":1588425101785,"metadata":{"connectionId":1,"message":{"seq":669,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/network.js","path":"/Users/roblou/code/vscode/out/vs/base/common/network.js","sourceReference":515948808}}}},"level":0} {"tag":"dap.send","timestamp":1588425101786,"metadata":{"connectionId":1,"message":{"seq":670,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/windowActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/actions/windowActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101786,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101786,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uri.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uri.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uri.ts","sourceMapSources":["vs/base/common/uri.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101786,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js"},"level":0} {"tag":"dap.send","timestamp":1588425101787,"metadata":{"connectionId":1,"message":{"seq":671,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101787,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101787,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/common/files.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/files.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/common/files.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/common/files.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/common/files.ts","sourceMapSources":["vs/platform/files/common/files.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101787,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js"},"level":0} {"tag":"dap.send","timestamp":1588425101788,"metadata":{"connectionId":1,"message":{"seq":672,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js","path":"/Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js","sourceReference":1170663542}}}},"level":0} {"tag":"dap.send","timestamp":1588425101788,"metadata":{"connectionId":1,"message":{"seq":673,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js","sourceReference":1388276331}}}},"level":0} {"tag":"dap.send","timestamp":1588425101789,"metadata":{"connectionId":1,"message":{"seq":674,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js","path":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js","sourceReference":1246901194}}}},"level":0} {"tag":"dap.send","timestamp":1588425101794,"metadata":{"connectionId":1,"message":{"seq":675,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/common/files.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/common/files.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101795,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101795,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/network.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/network.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/network.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/network.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/network.ts","sourceMapSources":["vs/base/common/network.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101795,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101795,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101797,"metadata":{"connectionId":1,"message":{"seq":676,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/network.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/network.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101797,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101797,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/workspaces/common/workspaces.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/workspaces/common/workspaces.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/workspaces/common/workspaces.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/workspaces/common/workspaces.ts","sourceMapSources":["vs/platform/workspaces/common/workspaces.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101798,"metadata":{"connectionId":1,"message":{"seq":677,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js","sourceReference":770163622}}}},"level":0} {"tag":"dap.send","timestamp":1588425101798,"metadata":{"connectionId":1,"message":{"seq":678,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js","sourceReference":1405379047}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101798,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/severity.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/severity.js"},"level":0} {"tag":"dap.send","timestamp":1588425101798,"metadata":{"connectionId":1,"message":{"seq":679,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/workspaces/common/workspaces.ts","path":"/Users/roblou/code/vscode/src/vs/platform/workspaces/common/workspaces.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101806,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101806,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101806,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/history/common/history.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/history/common/history.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/history/common/history.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/history/common/history.ts","sourceMapSources":["vs/workbench/services/history/common/history.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101807,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101807,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/lifecycle/common/lifecycle.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycle.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycle.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycle.ts","sourceMapSources":["vs/platform/lifecycle/common/lifecycle.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101807,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101807,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js"},"level":0} {"tag":"dap.send","timestamp":1588425101807,"metadata":{"connectionId":1,"message":{"seq":680,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/severity.js","path":"/Users/roblou/code/vscode/out/vs/base/common/severity.js","sourceReference":162014388}}}},"level":0} {"tag":"dap.send","timestamp":1588425101807,"metadata":{"connectionId":1,"message":{"seq":681,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js","sourceReference":821386704}}}},"level":0} {"tag":"dap.send","timestamp":1588425101808,"metadata":{"connectionId":1,"message":{"seq":682,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/history/common/history.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/history/common/history.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101808,"metadata":{"connectionId":1,"message":{"seq":683,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycle.ts","path":"/Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycle.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101808,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101808,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/modeService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/modeService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/modeService.ts","sourceMapSources":["vs/editor/common/services/modeService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101808,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101808,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/dialogs/browser/abstractFileDialogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/abstractFileDialogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts","sourceMapSources":["vs/workbench/services/dialogs/browser/abstractFileDialogService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101808,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js"},"level":0} {"tag":"dap.send","timestamp":1588425101808,"metadata":{"connectionId":1,"message":{"seq":684,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js","sourceReference":203554645}}}},"level":0} {"tag":"dap.send","timestamp":1588425101808,"metadata":{"connectionId":1,"message":{"seq":685,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js","path":"/Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js","sourceReference":1619483513}}}},"level":0} {"tag":"dap.send","timestamp":1588425101809,"metadata":{"connectionId":1,"message":{"seq":686,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/modeService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/modeService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101809,"metadata":{"connectionId":1,"message":{"seq":687,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101809,"metadata":{"connectionId":1,"message":{"seq":688,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","path":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","sourceReference":619557902}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101809,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/log/common/log.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101810,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101810,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/severity.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/severity.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/severity.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/severity.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/severity.ts","sourceMapSources":["vs/base/common/severity.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101810,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101811,"metadata":{"connectionId":1,"message":{"seq":689,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/severity.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/severity.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101811,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101811,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts","sourceMapSources":["vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101811,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101811,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/integrity/common/integrity.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/integrity/common/integrity.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/integrity/common/integrity.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/integrity/common/integrity.ts","sourceMapSources":["vs/workbench/services/integrity/common/integrity.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101811,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101811,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/notification/common/notification.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/notification/common/notification.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/notification/common/notification.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/notification/common/notification.ts","sourceMapSources":["vs/platform/notification/common/notification.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101811,"metadata":{"connectionId":1,"message":{"seq":690,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/log/common/log.js","path":"/Users/roblou/code/vscode/out/vs/platform/log/common/log.js","sourceReference":483739037}}}},"level":0} {"tag":"dap.send","timestamp":1588425101812,"metadata":{"connectionId":1,"message":{"seq":691,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js","sourceReference":1259119806}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101816,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101816,"metadata":{"connectionId":1,"message":{"seq":692,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101816,"metadata":{"connectionId":1,"message":{"seq":693,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/integrity/common/integrity.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/integrity/common/integrity.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101816,"metadata":{"connectionId":1,"message":{"seq":694,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/notification/common/notification.ts","path":"/Users/roblou/code/vscode/src/vs/platform/notification/common/notification.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101817,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101817,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/lifecycle.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","sourceMapSources":["vs/base/common/lifecycle.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101817,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/amd.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/amd.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101818,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/errors.js"},"level":0} {"tag":"dap.send","timestamp":1588425101818,"metadata":{"connectionId":1,"message":{"seq":695,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101818,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js"},"level":0} {"tag":"dap.send","timestamp":1588425101818,"metadata":{"connectionId":1,"message":{"seq":696,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","sourceReference":1800185792}}}},"level":0} {"tag":"dap.send","timestamp":1588425101818,"metadata":{"connectionId":1,"message":{"seq":697,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/amd.js","path":"/Users/roblou/code/vscode/out/vs/base/common/amd.js","sourceReference":306803587}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101819,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101819,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/log/common/log.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/log/common/log.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceMapSources":["vs/platform/log/common/log.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101819,"metadata":{"connectionId":1,"message":{"seq":698,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/errors.js","path":"/Users/roblou/code/vscode/out/vs/base/common/errors.js","sourceReference":480831217}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101821,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101821,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101821,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/workbenchThemeService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/workbenchThemeService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService.ts","sourceMapSources":["vs/workbench/services/themes/common/workbenchThemeService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101821,"metadata":{"connectionId":1,"message":{"seq":699,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101821,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101822,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js"},"level":0} {"tag":"dap.send","timestamp":1588425101822,"metadata":{"connectionId":1,"message":{"seq":700,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101822,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101822,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/browser/abstractTextMateService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts","sourceMapSources":["vs/workbench/services/textMate/browser/abstractTextMateService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101822,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101822,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/amd.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/amd.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/amd.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/amd.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/amd.ts","sourceMapSources":["vs/base/common/amd.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101823,"metadata":{"connectionId":1,"message":{"seq":701,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js","sourceReference":590192526}}}},"level":0} {"tag":"dap.send","timestamp":1588425101823,"metadata":{"connectionId":1,"message":{"seq":702,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js","sourceReference":405082027}}}},"level":0} {"tag":"dap.send","timestamp":1588425101823,"metadata":{"connectionId":1,"message":{"seq":703,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js","sourceReference":859831903}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101824,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101824,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101824,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/errors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/errors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/errors.ts","sourceMapSources":["vs/base/common/errors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101824,"metadata":{"connectionId":1,"message":{"seq":704,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101825,"metadata":{"connectionId":1,"message":{"seq":705,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/amd.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/amd.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101825,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101825,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/tokensStore.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/tokensStore.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/tokensStore.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/tokensStore.ts","sourceMapSources":["vs/editor/common/model/tokensStore.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101825,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101825,"metadata":{"connectionId":1,"message":{"seq":706,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js","sourceReference":777193077}}}},"level":0} {"tag":"dap.send","timestamp":1588425101825,"metadata":{"connectionId":1,"message":{"seq":707,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js","path":"/Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js","sourceReference":235534040}}}},"level":0} {"tag":"dap.send","timestamp":1588425101825,"metadata":{"connectionId":1,"message":{"seq":708,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101826,"metadata":{"connectionId":1,"message":{"seq":709,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/tokensStore.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/tokensStore.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101826,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101826,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101826,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.ts","sourceMapSources":["vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101827,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101827,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/node/ipc.cp.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.cp.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.cp.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.cp.ts","sourceMapSources":["vs/base/parts/ipc/node/ipc.cp.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101827,"metadata":{"connectionId":1,"message":{"seq":710,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js","path":"/Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js","sourceReference":1088527484}}}},"level":0} {"tag":"dap.send","timestamp":1588425101828,"metadata":{"connectionId":1,"message":{"seq":711,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js","path":"/Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js","sourceReference":1881499768}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101834,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js"},"level":0} {"tag":"dap.send","timestamp":1588425101834,"metadata":{"connectionId":1,"message":{"seq":712,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101834,"metadata":{"connectionId":1,"message":{"seq":713,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.cp.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.cp.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101834,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101834,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/common/ipc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.ts","sourceMapSources":["vs/base/parts/ipc/common/ipc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101835,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101836,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101836,"metadata":{"connectionId":1,"message":{"seq":714,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101836,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101836,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/environment/common/environment.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/environment/common/environment.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/environment/common/environment.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/environment/common/environment.ts","sourceMapSources":["vs/platform/environment/common/environment.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101836,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101836,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/environment/node/environmentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/environment/node/environmentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/environment/node/environmentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/environment/node/environmentService.ts","sourceMapSources":["vs/platform/environment/node/environmentService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101836,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js"},"level":0} {"tag":"dap.send","timestamp":1588425101837,"metadata":{"connectionId":1,"message":{"seq":715,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js","sourceReference":497597513}}}},"level":0} {"tag":"dap.send","timestamp":1588425101837,"metadata":{"connectionId":1,"message":{"seq":716,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js","sourceReference":2006450277}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101837,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101837,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/progress/common/progress.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/progress/common/progress.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/progress/common/progress.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/progress/common/progress.ts","sourceMapSources":["vs/platform/progress/common/progress.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101837,"metadata":{"connectionId":1,"message":{"seq":717,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/environment/common/environment.ts","path":"/Users/roblou/code/vscode/src/vs/platform/environment/common/environment.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101837,"metadata":{"connectionId":1,"message":{"seq":718,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/environment/node/environmentService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/environment/node/environmentService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101837,"metadata":{"connectionId":1,"message":{"seq":719,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js","sourceReference":1767669290}}}},"level":0} {"tag":"dap.send","timestamp":1588425101837,"metadata":{"connectionId":1,"message":{"seq":720,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js","sourceReference":1119419560}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101838,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/performance.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/performance.js"},"level":0} {"tag":"dap.send","timestamp":1588425101838,"metadata":{"connectionId":1,"message":{"seq":721,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/progress/common/progress.ts","path":"/Users/roblou/code/vscode/src/vs/platform/progress/common/progress.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101839,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101839,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101839,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101839,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/webWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/webWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/webWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/webWorker.ts","sourceMapSources":["vs/editor/common/services/webWorker.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101840,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101840,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/search/common/search.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/search.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/search.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/search/common/search.ts","sourceMapSources":["vs/workbench/services/search/common/search.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101840,"metadata":{"connectionId":1,"message":{"seq":722,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/performance.js","path":"/Users/roblou/code/vscode/out/vs/base/common/performance.js","sourceReference":508189909}}}},"level":0} {"tag":"dap.send","timestamp":1588425101840,"metadata":{"connectionId":1,"message":{"seq":723,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js","sourceReference":1622938192}}}},"level":0} {"tag":"dap.send","timestamp":1588425101840,"metadata":{"connectionId":1,"message":{"seq":724,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js","sourceReference":449373557}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101841,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js"},"level":0} {"tag":"dap.send","timestamp":1588425101841,"metadata":{"connectionId":1,"message":{"seq":725,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/webWorker.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/webWorker.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101841,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101841,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/search/common/searchService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchService.ts","sourceMapSources":["vs/workbench/services/search/common/searchService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101841,"metadata":{"connectionId":1,"message":{"seq":726,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/search.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/search.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101841,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101841,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/common/telemetry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetry.ts","sourceMapSources":["vs/platform/telemetry/common/telemetry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101841,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js"},"level":0} {"tag":"dap.send","timestamp":1588425101842,"metadata":{"connectionId":1,"message":{"seq":727,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101843,"metadata":{"connectionId":1,"message":{"seq":728,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetry.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101843,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101843,"metadata":{"connectionId":1,"message":{"seq":729,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js","path":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js","sourceReference":1685519405}}}},"level":0} {"tag":"dap.send","timestamp":1588425101843,"metadata":{"connectionId":1,"message":{"seq":730,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","sourceReference":1805927607}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101843,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101843,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensions.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101844,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101844,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/search/node/searchIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/node/searchIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchIpc.ts","sourceMapSources":["vs/workbench/services/search/node/searchIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101844,"metadata":{"connectionId":1,"message":{"seq":731,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101845,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425101845,"metadata":{"connectionId":1,"message":{"seq":732,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchIpc.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/search/node/searchIpc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101845,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101845,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/instantiation/common/serviceCollection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/serviceCollection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/serviceCollection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/instantiation/common/serviceCollection.ts","sourceMapSources":["vs/platform/instantiation/common/serviceCollection.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101845,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101845,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/workbench.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/workbench.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/workbench.ts","sourceMapSources":["vs/workbench/browser/workbench.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101845,"metadata":{"connectionId":1,"message":{"seq":733,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js","sourceReference":311609757}}}},"level":0} {"tag":"dap.send","timestamp":1588425101845,"metadata":{"connectionId":1,"message":{"seq":734,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js","sourceReference":793650698}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101846,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/extpath.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/extpath.js"},"level":0} {"tag":"dap.send","timestamp":1588425101846,"metadata":{"connectionId":1,"message":{"seq":735,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/serviceCollection.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/serviceCollection.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101847,"metadata":{"connectionId":1,"message":{"seq":736,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/workbench.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/workbench.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101847,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101847,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/browser/configurationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configurationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts","sourceMapSources":["vs/workbench/services/configuration/browser/configurationService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101847,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js"},"level":0} {"tag":"dap.send","timestamp":1588425101847,"metadata":{"connectionId":1,"message":{"seq":737,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configurationService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101848,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425101848,"metadata":{"connectionId":1,"message":{"seq":738,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/extpath.js","path":"/Users/roblou/code/vscode/out/vs/base/common/extpath.js","sourceReference":198230777}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101849,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101850,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101850,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/log/common/logIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/log/common/logIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/log/common/logIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/log/common/logIpc.ts","sourceMapSources":["vs/platform/log/common/logIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101850,"metadata":{"connectionId":1,"message":{"seq":739,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js","path":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js","sourceReference":1129367249}}}},"level":0} {"tag":"dap.send","timestamp":1588425101850,"metadata":{"connectionId":1,"message":{"seq":740,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js","sourceReference":1522140748}}}},"level":0} {"tag":"dap.send","timestamp":1588425101850,"metadata":{"connectionId":1,"message":{"seq":741,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js","sourceReference":1676144098}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101850,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js"},"level":0} {"tag":"dap.send","timestamp":1588425101851,"metadata":{"connectionId":1,"message":{"seq":742,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/logIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/logIpc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101851,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101851,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/extpath.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/extpath.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/extpath.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/extpath.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/extpath.ts","sourceMapSources":["vs/base/common/extpath.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101851,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101851,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/electron-browser/window.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/electron-browser/window.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/window.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/electron-browser/window.ts","sourceMapSources":["vs/workbench/electron-browser/window.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101852,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101852,"metadata":{"connectionId":1,"message":{"seq":743,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/extpath.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/extpath.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101852,"metadata":{"connectionId":1,"message":{"seq":744,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/window.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/electron-browser/window.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101852,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101852,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/storage/node/storageIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/storage/node/storageIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/storage/node/storageIpc.ts","sourceMapSources":["vs/platform/storage/node/storageIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101852,"metadata":{"connectionId":1,"message":{"seq":745,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js","path":"/Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js","sourceReference":88224377}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101853,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101853,"metadata":{"connectionId":1,"message":{"seq":746,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/storage/node/storageIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/storage/node/storageIpc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101853,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101853,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/environment/electron-browser/environmentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/environment/electron-browser/environmentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/environment/electron-browser/environmentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/environment/electron-browser/environmentService.ts","sourceMapSources":["vs/workbench/services/environment/electron-browser/environmentService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101853,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101854,"metadata":{"connectionId":1,"message":{"seq":747,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js","path":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js","sourceReference":1627476207}}}},"level":0} {"tag":"dap.send","timestamp":1588425101854,"metadata":{"connectionId":1,"message":{"seq":748,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js","path":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js","sourceReference":1123509665}}}},"level":0} {"tag":"dap.send","timestamp":1588425101855,"metadata":{"connectionId":1,"message":{"seq":749,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/environment/electron-browser/environmentService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/environment/electron-browser/environmentService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101855,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101855,"metadata":{"connectionId":1,"message":{"seq":750,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js","path":"/Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js","sourceReference":1183577988}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101855,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101855,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/driver/electron-browser/driver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/driver/electron-browser/driver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/driver/electron-browser/driver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/driver/electron-browser/driver.ts","sourceMapSources":["vs/platform/driver/electron-browser/driver.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101856,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js"},"level":0} {"tag":"dap.send","timestamp":1588425101857,"metadata":{"connectionId":1,"message":{"seq":751,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/driver/electron-browser/driver.ts","path":"/Users/roblou/code/vscode/src/vs/platform/driver/electron-browser/driver.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101857,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101857,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/storage/node/storageService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/storage/node/storageService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/storage/node/storageService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/storage/node/storageService.ts","sourceMapSources":["vs/platform/storage/node/storageService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101858,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101858,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101858,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/ipc/electron-browser/mainProcessService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/mainProcessService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService.ts","sourceMapSources":["vs/platform/ipc/electron-browser/mainProcessService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101858,"metadata":{"connectionId":1,"message":{"seq":752,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/storage/node/storageService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/storage/node/storageService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101858,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101859,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/remote/electron-browser/remoteAuthorityResolverService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts","sourceMapSources":["vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101859,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101859,"metadata":{"connectionId":1,"message":{"seq":753,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js","sourceReference":1442626413}}}},"level":0} {"tag":"dap.send","timestamp":1588425101859,"metadata":{"connectionId":1,"message":{"seq":754,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js","path":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js","sourceReference":955807660}}}},"level":0} {"tag":"dap.send","timestamp":1588425101859,"metadata":{"connectionId":1,"message":{"seq":755,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js","sourceReference":2061165014}}}},"level":0} {"tag":"dap.send","timestamp":1588425101860,"metadata":{"connectionId":1,"message":{"seq":756,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101860,"metadata":{"connectionId":1,"message":{"seq":757,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101860,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101860,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/common/fileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/common/fileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/common/fileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/common/fileService.ts","sourceMapSources":["vs/platform/files/common/fileService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101860,"metadata":{"connectionId":1,"message":{"seq":758,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js","sourceReference":1338544131}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101860,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101861,"metadata":{"connectionId":1,"message":{"seq":759,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/common/fileService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/common/fileService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101861,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101861,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/remote/common/remoteAuthorityResolver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAuthorityResolver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver.ts","sourceMapSources":["vs/platform/remote/common/remoteAuthorityResolver.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101861,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101862,"metadata":{"connectionId":1,"message":{"seq":760,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver.ts","path":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101862,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101862,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/electron-browser/diskFileSystemProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/electron-browser/diskFileSystemProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/electron-browser/diskFileSystemProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/electron-browser/diskFileSystemProvider.ts","sourceMapSources":["vs/platform/files/electron-browser/diskFileSystemProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101863,"metadata":{"connectionId":1,"message":{"seq":761,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js","sourceReference":702124282}}}},"level":0} {"tag":"dap.send","timestamp":1588425101863,"metadata":{"connectionId":1,"message":{"seq":762,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js","path":"/Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js","sourceReference":891921134}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101863,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js"},"level":0} {"tag":"dap.send","timestamp":1588425101864,"metadata":{"connectionId":1,"message":{"seq":763,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/electron-browser/diskFileSystemProvider.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/electron-browser/diskFileSystemProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101864,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101864,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/common/textMateService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/textMateService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/textMateService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/textMateService.ts","sourceMapSources":["vs/workbench/services/textMate/common/textMateService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101865,"metadata":{"connectionId":1,"message":{"seq":764,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/textMateService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/textMateService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101865,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/resources.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/resources.js"},"level":0} {"tag":"dap.send","timestamp":1588425101867,"metadata":{"connectionId":1,"message":{"seq":765,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js","path":"/Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js","sourceReference":1341200508}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101867,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101867,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/common/remoteAgentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentService.ts","sourceMapSources":["vs/workbench/services/remote/common/remoteAgentService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101867,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101867,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/log/node/spdlogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/log/node/spdlogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/log/node/spdlogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/log/node/spdlogService.ts","sourceMapSources":["vs/platform/log/node/spdlogService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101868,"metadata":{"connectionId":1,"message":{"seq":766,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/resources.js","path":"/Users/roblou/code/vscode/out/vs/base/common/resources.js","sourceReference":930219299}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101868,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101868,"metadata":{"connectionId":1,"message":{"seq":767,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101869,"metadata":{"connectionId":1,"message":{"seq":768,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/node/spdlogService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/node/spdlogService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101869,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101869,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101869,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/sign/common/sign.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/sign/common/sign.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/sign/common/sign.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/sign/common/sign.ts","sourceMapSources":["vs/platform/sign/common/sign.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101870,"metadata":{"connectionId":1,"message":{"seq":769,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/sign/common/sign.ts","path":"/Users/roblou/code/vscode/src/vs/platform/sign/common/sign.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101870,"metadata":{"connectionId":1,"message":{"seq":770,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js","path":"/Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js","sourceReference":1309987248}}}},"level":0} {"tag":"dap.send","timestamp":1588425101870,"metadata":{"connectionId":1,"message":{"seq":771,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js","sourceReference":1128693417}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101871,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101872,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101872,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/resources.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/resources.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/resources.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/resources.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/resources.ts","sourceMapSources":["vs/base/common/resources.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101872,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101873,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425101873,"metadata":{"connectionId":1,"message":{"seq":772,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/resources.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/resources.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101873,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101873,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/sign/node/signService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/sign/node/signService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/sign/node/signService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/sign/node/signService.ts","sourceMapSources":["vs/platform/sign/node/signService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101873,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/buffer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/buffer.js"},"level":0} {"tag":"dap.send","timestamp":1588425101873,"metadata":{"connectionId":1,"message":{"seq":773,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js","sourceReference":845171641}}}},"level":0} {"tag":"dap.send","timestamp":1588425101873,"metadata":{"connectionId":1,"message":{"seq":774,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js","path":"/Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js","sourceReference":438010850}}}},"level":0} {"tag":"dap.send","timestamp":1588425101873,"metadata":{"connectionId":1,"message":{"seq":775,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js","sourceReference":567172222}}}},"level":0} {"tag":"dap.send","timestamp":1588425101874,"metadata":{"connectionId":1,"message":{"seq":776,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/sign/node/signService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/sign/node/signService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101874,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101874,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts","sourceMapSources":["vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101874,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425101875,"metadata":{"connectionId":1,"message":{"seq":777,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/buffer.js","path":"/Users/roblou/code/vscode/out/vs/base/common/buffer.js","sourceReference":864307045}}}},"level":0} {"tag":"dap.send","timestamp":1588425101875,"metadata":{"connectionId":1,"message":{"seq":778,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101875,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/pfs.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/pfs.js"},"level":0} {"tag":"dap.send","timestamp":1588425101876,"metadata":{"connectionId":1,"message":{"seq":779,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js","sourceReference":2028289169}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101876,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101876,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/node/configurationCache.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/node/configurationCache.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/node/configurationCache.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/node/configurationCache.ts","sourceMapSources":["vs/workbench/services/configuration/node/configurationCache.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101876,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101876,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/resource/common/resourceIdentityService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/resource/common/resourceIdentityService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/resource/common/resourceIdentityService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/resource/common/resourceIdentityService.ts","sourceMapSources":["vs/platform/resource/common/resourceIdentityService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101877,"metadata":{"connectionId":1,"message":{"seq":780,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/node/configurationCache.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/node/configurationCache.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101877,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101877,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/resource/node/resourceIdentityServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/resource/node/resourceIdentityServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/resource/node/resourceIdentityServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/resource/node/resourceIdentityServiceImpl.ts","sourceMapSources":["vs/platform/resource/node/resourceIdentityServiceImpl.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101878,"metadata":{"connectionId":1,"message":{"seq":781,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/resource/common/resourceIdentityService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/resource/common/resourceIdentityService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101878,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101878,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/buffer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/buffer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/buffer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/buffer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/buffer.ts","sourceMapSources":["vs/base/common/buffer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101878,"metadata":{"connectionId":1,"message":{"seq":782,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/pfs.js","path":"/Users/roblou/code/vscode/out/vs/base/node/pfs.js","sourceReference":1104782103}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101878,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/path.js"},"level":0} {"tag":"dap.send","timestamp":1588425101879,"metadata":{"connectionId":1,"message":{"seq":783,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/resource/node/resourceIdentityServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/platform/resource/node/resourceIdentityServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101879,"metadata":{"connectionId":1,"message":{"seq":784,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/buffer.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/buffer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101879,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101879,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/userData/common/fileUserDataProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/userData/common/fileUserDataProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/userData/common/fileUserDataProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/userData/common/fileUserDataProvider.ts","sourceMapSources":["vs/workbench/services/userData/common/fileUserDataProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101879,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101880,"metadata":{"connectionId":1,"message":{"seq":785,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/userData/common/fileUserDataProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/userData/common/fileUserDataProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101880,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101880,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/pfs.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/pfs.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/pfs.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/pfs.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/pfs.ts","sourceMapSources":["vs/base/node/pfs.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101880,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/encoding.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/encoding.js"},"level":0} {"tag":"dap.send","timestamp":1588425101881,"metadata":{"connectionId":1,"message":{"seq":786,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/pfs.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/pfs.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101881,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101883,"metadata":{"connectionId":1,"message":{"seq":787,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/path.js","path":"/Users/roblou/code/vscode/out/vs/base/common/path.js","sourceReference":346319718}}}},"level":0} {"tag":"dap.send","timestamp":1588425101883,"metadata":{"connectionId":1,"message":{"seq":788,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js","sourceReference":1778530140}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101883,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101883,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/path.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/path.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/path.ts","sourceMapSources":["vs/base/common/path.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101883,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101883,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textfile/browser/textFileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/browser/textFileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/browser/textFileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textfile/browser/textFileService.ts","sourceMapSources":["vs/workbench/services/textfile/browser/textFileService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101884,"metadata":{"connectionId":1,"message":{"seq":789,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/encoding.js","path":"/Users/roblou/code/vscode/out/vs/base/node/encoding.js","sourceReference":1885968086}}}},"level":0} {"tag":"dap.send","timestamp":1588425101884,"metadata":{"connectionId":1,"message":{"seq":790,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js","sourceReference":217207230}}}},"level":0} {"tag":"dap.send","timestamp":1588425101884,"metadata":{"connectionId":1,"message":{"seq":791,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js","sourceReference":423181555}}}},"level":0} {"tag":"dap.send","timestamp":1588425101884,"metadata":{"connectionId":1,"message":{"seq":792,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101885,"metadata":{"connectionId":1,"message":{"seq":793,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/browser/textFileService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/browser/textFileService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101885,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101885,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101885,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/encoding.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/encoding.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/encoding.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/encoding.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/encoding.ts","sourceMapSources":["vs/base/node/encoding.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101885,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101885,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textfile/common/textfiles.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textfiles.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textfiles.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textfiles.ts","sourceMapSources":["vs/workbench/services/textfile/common/textfiles.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101886,"metadata":{"connectionId":1,"message":{"seq":794,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/encoding.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/encoding.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101886,"metadata":{"connectionId":1,"message":{"seq":795,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textfiles.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textfiles.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101886,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/stream.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/stream.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101887,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101887,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/resolverService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/resolverService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/resolverService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/resolverService.ts","sourceMapSources":["vs/editor/common/services/resolverService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101887,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/labels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/labels.js"},"level":0} {"tag":"dap.send","timestamp":1588425101888,"metadata":{"connectionId":1,"message":{"seq":796,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/resolverService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/resolverService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101888,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101889,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101889,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/textModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/textModel.ts","sourceMapSources":["vs/editor/common/model/textModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101889,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101890,"metadata":{"connectionId":1,"message":{"seq":797,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101890,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101890,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/stream.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/stream.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/stream.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/stream.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/stream.ts","sourceMapSources":["vs/base/node/stream.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101891,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101891,"metadata":{"connectionId":1,"message":{"seq":798,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/stream.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/stream.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101891,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101891,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/labels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/labels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/labels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/labels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/labels.ts","sourceMapSources":["vs/base/common/labels.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101892,"metadata":{"connectionId":1,"message":{"seq":799,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModel.js","sourceReference":1190695077}}}},"level":0} {"tag":"dap.send","timestamp":1588425101892,"metadata":{"connectionId":1,"message":{"seq":800,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/stream.js","path":"/Users/roblou/code/vscode/out/vs/base/node/stream.js","sourceReference":421852857}}}},"level":0} {"tag":"dap.send","timestamp":1588425101892,"metadata":{"connectionId":1,"message":{"seq":801,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/labels.js","path":"/Users/roblou/code/vscode/out/vs/base/common/labels.js","sourceReference":563907916}}}},"level":0} {"tag":"dap.send","timestamp":1588425101892,"metadata":{"connectionId":1,"message":{"seq":802,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js","sourceReference":1560529179}}}},"level":0} {"tag":"dap.send","timestamp":1588425101894,"metadata":{"connectionId":1,"message":{"seq":803,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/labels.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/labels.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101894,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101895,"metadata":{"connectionId":1,"message":{"seq":804,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js","path":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js","sourceReference":1192610999}}}},"level":0} {"tag":"dap.send","timestamp":1588425101895,"metadata":{"connectionId":1,"message":{"seq":805,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js","sourceReference":96021787}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101895,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/date.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/date.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/services/codeEditorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorService.ts","sourceMapSources":["vs/editor/browser/services/codeEditorService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/ipc/electron-browser/sharedProcessService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/ipc/electron-browser/sharedProcessService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/sharedProcessService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/sharedProcessService.ts","sourceMapSources":["vs/platform/ipc/electron-browser/sharedProcessService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101896,"metadata":{"connectionId":1,"message":{"seq":806,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101896,"metadata":{"connectionId":1,"message":{"seq":807,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/sharedProcessService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/ipc/electron-browser/sharedProcessService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101896,"metadata":{"connectionId":1,"message":{"seq":808,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js","sourceReference":372190529}}}},"level":0} {"tag":"dap.send","timestamp":1588425101896,"metadata":{"connectionId":1,"message":{"seq":809,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/date.js","path":"/Users/roblou/code/vscode/out/vs/base/common/date.js","sourceReference":1452638032}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101896,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101897,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101897,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/dialogs/browser/dialogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/dialogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/dialogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/dialogService.ts","sourceMapSources":["vs/workbench/services/dialogs/browser/dialogService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101897,"metadata":{"connectionId":1,"message":{"seq":810,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/dialogService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/dialogService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101898,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101898,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/path/common/pathService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/path/common/pathService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/path/common/pathService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/path/common/pathService.ts","sourceMapSources":["vs/workbench/services/path/common/pathService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101898,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/event.js"},"level":0} {"tag":"dap.send","timestamp":1588425101898,"metadata":{"connectionId":1,"message":{"seq":811,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js","sourceReference":1645342635}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101899,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101899,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/date.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/date.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/date.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/date.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/date.ts","sourceMapSources":["vs/base/common/date.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101899,"metadata":{"connectionId":1,"message":{"seq":812,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/path/common/pathService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/path/common/pathService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101899,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101900,"metadata":{"connectionId":1,"message":{"seq":813,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/date.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/date.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101900,"metadata":{"connectionId":1,"message":{"seq":814,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/event.js","path":"/Users/roblou/code/vscode/out/vs/base/common/event.js","sourceReference":1905750590}}}},"level":0} {"tag":"dap.send","timestamp":1588425101900,"metadata":{"connectionId":1,"message":{"seq":815,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js","path":"/Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js","sourceReference":1451640740}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101900,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101903,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101903,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/dialogs/electron-browser/dialogIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/dialogs/electron-browser/dialogIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/dialogs/electron-browser/dialogIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/dialogs/electron-browser/dialogIpc.ts","sourceMapSources":["vs/platform/dialogs/electron-browser/dialogIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101915,"metadata":{"connectionId":1,"message":{"seq":816,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/dialogs/electron-browser/dialogIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/dialogs/electron-browser/dialogIpc.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101915,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js"},"level":0} {"tag":"dap.send","timestamp":1588425101915,"metadata":{"connectionId":1,"message":{"seq":817,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js","path":"/Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js","sourceReference":1491649768}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101915,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101918,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101918,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/event.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/event.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceMapSources":["vs/base/common/event.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101919,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101919,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/layout/browser/layoutService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/layout/browser/layoutService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/layout/browser/layoutService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/layout/browser/layoutService.ts","sourceMapSources":["vs/platform/layout/browser/layoutService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101919,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js"},"level":0} {"tag":"dap.send","timestamp":1588425101921,"metadata":{"connectionId":1,"message":{"seq":818,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101921,"metadata":{"connectionId":1,"message":{"seq":819,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/layout/browser/layoutService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/layout/browser/layoutService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101921,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js"},"level":0} {"tag":"dap.send","timestamp":1588425101922,"metadata":{"connectionId":1,"message":{"seq":820,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js","sourceReference":1043335569}}}},"level":0} {"tag":"dap.send","timestamp":1588425101922,"metadata":{"connectionId":1,"message":{"seq":821,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js","sourceReference":750283395}}}},"level":0} {"tag":"dap.send","timestamp":1588425101922,"metadata":{"connectionId":1,"message":{"seq":822,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js","sourceReference":243754628}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101923,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101923,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/clipboard/common/clipboardService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/clipboard/common/clipboardService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/clipboard/common/clipboardService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/clipboard/common/clipboardService.ts","sourceMapSources":["vs/platform/clipboard/common/clipboardService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101923,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js"},"level":0} {"tag":"dap.send","timestamp":1588425101923,"metadata":{"connectionId":1,"message":{"seq":823,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js","sourceReference":1320862587}}}},"level":0} {"tag":"dap.send","timestamp":1588425101925,"metadata":{"connectionId":1,"message":{"seq":824,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/clipboard/common/clipboardService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/clipboard/common/clipboardService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101925,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101925,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/keymapInfo.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keymapInfo.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo.ts","sourceMapSources":["vs/workbench/services/keybinding/common/keymapInfo.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101926,"metadata":{"connectionId":1,"message":{"seq":825,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js","sourceReference":11259034}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101926,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101926,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101926,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/keyboardMapper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keyboardMapper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keyboardMapper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keyboardMapper.ts","sourceMapSources":["vs/workbench/services/keybinding/common/keyboardMapper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101926,"metadata":{"connectionId":1,"message":{"seq":826,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101927,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101927,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts","sourceMapSources":["vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101928,"metadata":{"connectionId":1,"message":{"seq":827,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keyboardMapper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keyboardMapper.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101928,"metadata":{"connectionId":1,"message":{"seq":828,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101928,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101928,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts","sourceMapSources":["vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101928,"metadata":{"connectionId":1,"message":{"seq":829,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js","sourceReference":813843498}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101928,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js"},"level":0} {"tag":"dap.send","timestamp":1588425101929,"metadata":{"connectionId":1,"message":{"seq":830,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101929,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101929,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/keybinding.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybinding.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybinding.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybinding.ts","sourceMapSources":["vs/platform/keybinding/common/keybinding.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101929,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js"},"level":0} {"tag":"dap.send","timestamp":1588425101931,"metadata":{"connectionId":1,"message":{"seq":831,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybinding.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybinding.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101931,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101932,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101932,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/output/common/outputChannelModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/outputChannelModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/output/common/outputChannelModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/output/common/outputChannelModel.ts","sourceMapSources":["vs/workbench/services/output/common/outputChannelModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101932,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js"},"level":0} {"tag":"dap.send","timestamp":1588425101933,"metadata":{"connectionId":1,"message":{"seq":832,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js","sourceReference":876410899}}}},"level":0} {"tag":"dap.send","timestamp":1588425101933,"metadata":{"connectionId":1,"message":{"seq":833,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js","path":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js","sourceReference":1910164357}}}},"level":0} {"tag":"dap.send","timestamp":1588425101933,"metadata":{"connectionId":1,"message":{"seq":834,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js","sourceReference":698277866}}}},"level":0} {"tag":"dap.send","timestamp":1588425101933,"metadata":{"connectionId":1,"message":{"seq":835,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/output/common/outputChannelModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/output/common/outputChannelModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101934,"metadata":{"connectionId":1,"message":{"seq":836,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js","sourceReference":2018623308}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101934,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101934,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101934,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/remote/common/remoteHosts.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteHosts.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteHosts.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/remote/common/remoteHosts.ts","sourceMapSources":["vs/platform/remote/common/remoteHosts.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101935,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101935,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts","sourceMapSources":["vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101936,"metadata":{"connectionId":1,"message":{"seq":837,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteHosts.ts","path":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteHosts.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101936,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101936,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionManagement/common/extensionManagement.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagement.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts","sourceMapSources":["vs/workbench/services/extensionManagement/common/extensionManagement.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101936,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425101936,"metadata":{"connectionId":1,"message":{"seq":838,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js","sourceReference":1626251367}}}},"level":0} {"tag":"dap.send","timestamp":1588425101937,"metadata":{"connectionId":1,"message":{"seq":839,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101937,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101937,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/output/node/outputAppender.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/node/outputAppender.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/output/node/outputAppender.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/output/node/outputAppender.ts","sourceMapSources":["vs/workbench/services/output/node/outputAppender.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101937,"metadata":{"connectionId":1,"message":{"seq":840,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101937,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js"},"level":0} {"tag":"dap.send","timestamp":1588425101938,"metadata":{"connectionId":1,"message":{"seq":841,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/output/node/outputAppender.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/output/node/outputAppender.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101938,"metadata":{"connectionId":1,"message":{"seq":842,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js","sourceReference":1883346010}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101940,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101941,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101941,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.ts","sourceMapSources":["vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101941,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101941,"metadata":{"connectionId":1,"message":{"seq":843,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js","sourceReference":1980302439}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101942,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js"},"level":0} {"tag":"dap.send","timestamp":1588425101942,"metadata":{"connectionId":1,"message":{"seq":844,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101943,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101943,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/extensionManagementIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts","sourceMapSources":["vs/platform/extensionManagement/common/extensionManagementIpc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101943,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101943,"metadata":{"connectionId":1,"message":{"seq":845,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js","sourceReference":2054066117}}}},"level":0} {"tag":"dap.send","timestamp":1588425101943,"metadata":{"connectionId":1,"message":{"seq":846,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","sourceReference":1760541622}}}},"level":0} {"tag":"dap.send","timestamp":1588425101944,"metadata":{"connectionId":1,"message":{"seq":847,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101944,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101945,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101945,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/remoteExtensionHostClient.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteExtensionHostClient.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts","sourceMapSources":["vs/workbench/services/extensions/common/remoteExtensionHostClient.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101945,"metadata":{"connectionId":1,"message":{"seq":848,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js","sourceReference":654957637}}}},"level":0} {"tag":"dap.send","timestamp":1588425101945,"metadata":{"connectionId":1,"message":{"seq":849,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js","sourceReference":1816871875}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101945,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js"},"level":0} {"tag":"dap.send","timestamp":1588425101946,"metadata":{"connectionId":1,"message":{"seq":850,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101946,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101946,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts","sourceMapSources":["vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101946,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101946,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/abstractExtensionService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","sourceMapSources":["vs/workbench/services/extensions/common/abstractExtensionService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101946,"metadata":{"connectionId":1,"message":{"seq":851,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js","path":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js","sourceReference":1765330587}}}},"level":0} {"tag":"dap.send","timestamp":1588425101946,"metadata":{"connectionId":1,"message":{"seq":852,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js","sourceReference":584298223}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101947,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101948,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101948,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/electron-browser/extensionHost.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","sourceMapSources":["vs/workbench/services/extensions/electron-browser/extensionHost.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101948,"metadata":{"connectionId":1,"message":{"seq":853,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101948,"metadata":{"connectionId":1,"message":{"seq":854,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101948,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101948,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensions/common/extensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensions/common/extensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensions/common/extensions.ts","sourceMapSources":["vs/platform/extensions/common/extensions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101948,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101949,"metadata":{"connectionId":1,"message":{"seq":855,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101949,"metadata":{"connectionId":1,"message":{"seq":856,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensions/common/extensions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensions/common/extensions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101949,"metadata":{"connectionId":1,"message":{"seq":857,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js","sourceReference":1620638003}}}},"level":0} {"tag":"dap.send","timestamp":1588425101949,"metadata":{"connectionId":1,"message":{"seq":858,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js","sourceReference":708036274}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101950,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101950,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101950,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/arrays.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/arrays.ts","sourceMapSources":["vs/base/common/arrays.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101951,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/actions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/actions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101951,"metadata":{"connectionId":1,"message":{"seq":859,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101951,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101951,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionsUtil.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsUtil.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionsUtil.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101952,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js"},"level":0} {"tag":"dap.send","timestamp":1588425101952,"metadata":{"connectionId":1,"message":{"seq":860,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js","sourceReference":1764051554}}}},"level":0} {"tag":"dap.send","timestamp":1588425101952,"metadata":{"connectionId":1,"message":{"seq":861,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/actions.js","path":"/Users/roblou/code/vscode/out/vs/base/common/actions.js","sourceReference":1290753153}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101952,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101952,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/common/telemetryUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryUtils.ts","sourceMapSources":["vs/platform/telemetry/common/telemetryUtils.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101952,"metadata":{"connectionId":1,"message":{"seq":862,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101953,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101953,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/common/telemetryService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/telemetryService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryService.ts","sourceMapSources":["vs/platform/telemetry/common/telemetryService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101953,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js"},"level":0} {"tag":"dap.send","timestamp":1588425101953,"metadata":{"connectionId":1,"message":{"seq":863,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js","sourceReference":1209216287}}}},"level":0} {"tag":"dap.send","timestamp":1588425101962,"metadata":{"connectionId":1,"message":{"seq":864,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryUtils.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryUtils.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101962,"metadata":{"connectionId":1,"message":{"seq":865,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/telemetryService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101962,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101962,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/functional.js"},"level":0} {"tag":"dap.send","timestamp":1588425101963,"metadata":{"connectionId":1,"message":{"seq":866,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js","sourceReference":1852438674}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101963,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101963,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/node/telemetryIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/telemetryIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/telemetryIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/node/telemetryIpc.ts","sourceMapSources":["vs/platform/telemetry/node/telemetryIpc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101963,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js"},"level":0} {"tag":"dap.send","timestamp":1588425101964,"metadata":{"connectionId":1,"message":{"seq":867,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js","sourceReference":1854425905}}}},"level":0} {"tag":"dap.send","timestamp":1588425101964,"metadata":{"connectionId":1,"message":{"seq":868,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/functional.js","path":"/Users/roblou/code/vscode/out/vs/base/common/functional.js","sourceReference":454399837}}}},"level":0} {"tag":"dap.send","timestamp":1588425101964,"metadata":{"connectionId":1,"message":{"seq":869,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/telemetryIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/telemetryIpc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101964,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101964,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/actions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/actions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/actions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/actions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/actions.ts","sourceMapSources":["vs/base/common/actions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101965,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101965,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionPoints.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionPoints.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionPoints.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionPoints.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionPoints.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101965,"metadata":{"connectionId":1,"message":{"seq":870,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/actions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101965,"metadata":{"connectionId":1,"message":{"seq":871,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionPoints.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionPoints.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101965,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101965,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionHostProcessManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProcessManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionHostProcessManager.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101966,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js"},"level":0} {"tag":"dap.send","timestamp":1588425101966,"metadata":{"connectionId":1,"message":{"seq":872,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js","sourceReference":2078863437}}}},"level":0} {"tag":"dap.send","timestamp":1588425101966,"metadata":{"connectionId":1,"message":{"seq":873,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js","sourceReference":825638878}}}},"level":0} {"tag":"dap.send","timestamp":1588425101967,"metadata":{"connectionId":1,"message":{"seq":874,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101967,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101967,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/functional.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/functional.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/functional.ts","sourceMapSources":["vs/base/common/functional.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101967,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101967,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/node/workbenchCommonProperties.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/workbenchCommonProperties.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/workbenchCommonProperties.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/node/workbenchCommonProperties.ts","sourceMapSources":["vs/platform/telemetry/node/workbenchCommonProperties.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101967,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js"},"level":0} {"tag":"dap.send","timestamp":1588425101968,"metadata":{"connectionId":1,"message":{"seq":875,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101968,"metadata":{"connectionId":1,"message":{"seq":876,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/workbenchCommonProperties.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/workbenchCommonProperties.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101970,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101970,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/actionbar/actionbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/actionbar/actionbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts","sourceMapSources":["vs/base/browser/ui/actionbar/actionbar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101970,"metadata":{"connectionId":1,"message":{"seq":877,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js","sourceReference":248791287}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101973,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101973,"metadata":{"connectionId":1,"message":{"seq":878,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101973,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101974,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101974,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101974,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/contextmenu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/contextmenu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/contextmenu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/contextmenu.ts","sourceMapSources":["vs/base/browser/contextmenu.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101975,"metadata":{"connectionId":1,"message":{"seq":879,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js","sourceReference":1692944913}}}},"level":0} {"tag":"dap.send","timestamp":1588425101975,"metadata":{"connectionId":1,"message":{"seq":880,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js","sourceReference":1532375643}}}},"level":0} {"tag":"dap.send","timestamp":1588425101975,"metadata":{"connectionId":1,"message":{"seq":881,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js","sourceReference":1457121244}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101975,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/request/common/request.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/request/common/request.js"},"level":0} {"tag":"dap.send","timestamp":1588425101975,"metadata":{"connectionId":1,"message":{"seq":882,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/contextmenu.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/contextmenu.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101975,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101976,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/contextmenu/electron-browser/contextmenu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/electron-browser/contextmenu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/contextmenu/electron-browser/contextmenu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/contextmenu/electron-browser/contextmenu.ts","sourceMapSources":["vs/base/parts/contextmenu/electron-browser/contextmenu.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101976,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101976,"metadata":{"connectionId":1,"message":{"seq":883,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/contextmenu/electron-browser/contextmenu.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/contextmenu/electron-browser/contextmenu.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101977,"metadata":{"connectionId":1,"message":{"seq":884,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/request/common/request.js","path":"/Users/roblou/code/vscode/out/vs/platform/request/common/request.js","sourceReference":1911899427}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101978,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101978,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextview/browser/contextMenuService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuService.ts","sourceMapSources":["vs/platform/contextview/browser/contextMenuService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101978,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101978,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configurationResolver/common/configurationResolver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver.ts","sourceMapSources":["vs/workbench/services/configurationResolver/common/configurationResolver.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101978,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101978,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js"},"level":0} {"tag":"dap.send","timestamp":1588425101979,"metadata":{"connectionId":1,"message":{"seq":885,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js","sourceReference":610775425}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101980,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101980,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/common/quickInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickInput.ts","sourceMapSources":["vs/platform/quickinput/common/quickInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101980,"metadata":{"connectionId":1,"message":{"seq":886,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101980,"metadata":{"connectionId":1,"message":{"seq":887,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101980,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101981,"metadata":{"connectionId":1,"message":{"seq":888,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js","sourceReference":1504799143}}}},"level":0} {"tag":"dap.send","timestamp":1588425101981,"metadata":{"connectionId":1,"message":{"seq":889,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js","path":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js","sourceReference":1174309616}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101981,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101981,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/request/common/request.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/request/common/request.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/request/common/request.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/request/common/request.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/request/common/request.ts","sourceMapSources":["vs/platform/request/common/request.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101981,"metadata":{"connectionId":1,"message":{"seq":890,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickInput.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101981,"metadata":{"connectionId":1,"message":{"seq":891,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js","path":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js","sourceReference":1819929890}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101982,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js"},"level":0} {"tag":"dap.send","timestamp":1588425101982,"metadata":{"connectionId":1,"message":{"seq":892,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/request/common/request.ts","path":"/Users/roblou/code/vscode/src/vs/platform/request/common/request.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101982,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101982,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configurationResolver/browser/configurationResolverService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/browser/configurationResolverService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.ts","sourceMapSources":["vs/workbench/services/configurationResolver/browser/configurationResolverService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101983,"metadata":{"connectionId":1,"message":{"seq":893,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101983,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/extensionTipsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionTipsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.ts","sourceMapSources":["vs/platform/extensionManagement/common/extensionTipsService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101983,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/accessibility/common/accessibility.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibility.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibility.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibility.ts","sourceMapSources":["vs/platform/accessibility/common/accessibility.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101984,"metadata":{"connectionId":1,"message":{"seq":894,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js","sourceReference":89140767}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101984,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uuid.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uuid.js"},"level":0} {"tag":"dap.send","timestamp":1588425101985,"metadata":{"connectionId":1,"message":{"seq":895,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101985,"metadata":{"connectionId":1,"message":{"seq":896,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibility.ts","path":"/Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibility.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101985,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101985,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/accessibility/common/accessibilityService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/accessibility/common/accessibilityService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibilityService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibilityService.ts","sourceMapSources":["vs/platform/accessibility/common/accessibilityService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101987,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/contributions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/contributions.js"},"level":0} {"tag":"dap.send","timestamp":1588425101988,"metadata":{"connectionId":1,"message":{"seq":897,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibilityService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/accessibility/common/accessibilityService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101988,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425101989,"metadata":{"connectionId":1,"message":{"seq":898,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uuid.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uuid.js","sourceReference":184121984}}}},"level":0} {"tag":"dap.send","timestamp":1588425101989,"metadata":{"connectionId":1,"message":{"seq":899,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/contributions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/contributions.js","sourceReference":54384668}}}},"level":0} {"tag":"dap.send","timestamp":1588425101989,"metadata":{"connectionId":1,"message":{"seq":900,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js","sourceReference":910807205}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101989,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101989,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/common/jsonEditing.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/jsonEditing.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditing.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditing.ts","sourceMapSources":["vs/workbench/services/configuration/common/jsonEditing.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101989,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/url.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/url/common/url.js"},"level":0} {"tag":"dap.send","timestamp":1588425101990,"metadata":{"connectionId":1,"message":{"seq":901,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditing.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/jsonEditing.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101991,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js"},"level":0} {"tag":"dap.send","timestamp":1588425101991,"metadata":{"connectionId":1,"message":{"seq":902,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/url/common/url.js","path":"/Users/roblou/code/vscode/out/vs/platform/url/common/url.js","sourceReference":716884177}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101991,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101991,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uuid.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uuid.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uuid.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uuid.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uuid.ts","sourceMapSources":["vs/base/common/uuid.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101992,"metadata":{"connectionId":1,"message":{"seq":903,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uuid.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uuid.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101992,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101992,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/contributions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/contributions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/contributions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/contributions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/contributions.ts","sourceMapSources":["vs/workbench/common/contributions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101992,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101992,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/url/common/urlIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/url/common/urlIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/url/common/urlIpc.ts","sourceMapSources":["vs/platform/url/common/urlIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101992,"metadata":{"connectionId":1,"message":{"seq":904,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js","path":"/Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js","sourceReference":302397232}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101993,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js"},"level":0} {"tag":"dap.send","timestamp":1588425101993,"metadata":{"connectionId":1,"message":{"seq":905,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/contributions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/contributions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425101993,"metadata":{"connectionId":1,"message":{"seq":906,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/url/common/urlIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/url/common/urlIpc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101994,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101994,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/url/common/url.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/url.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/url/common/url.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/url/common/url.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/url/common/url.ts","sourceMapSources":["vs/platform/url/common/url.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101994,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425101995,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101995,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/url/node/urlService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/url/node/urlService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/url/node/urlService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/url/node/urlService.ts","sourceMapSources":["vs/platform/url/node/urlService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425101996,"metadata":{"connectionId":1,"message":{"seq":907,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/url/common/url.ts","path":"/Users/roblou/code/vscode/src/vs/platform/url/common/url.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101996,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js"},"level":0} {"tag":"dap.send","timestamp":1588425101997,"metadata":{"connectionId":1,"message":{"seq":908,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js","sourceReference":1231529346}}}},"level":0} {"tag":"dap.send","timestamp":1588425101997,"metadata":{"connectionId":1,"message":{"seq":909,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js","sourceReference":822046420}}}},"level":0} {"tag":"dap.send","timestamp":1588425101997,"metadata":{"connectionId":1,"message":{"seq":910,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js","path":"/Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js","sourceReference":5423593}}}},"level":0} {"tag":"dap.send","timestamp":1588425101997,"metadata":{"connectionId":1,"message":{"seq":911,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/url/node/urlService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/url/node/urlService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425101997,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"704","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js","startLine":0,"startColumn":0,"endLine":362,"endColumn":3,"executionContextId":1,"hash":"01dde5b12042080004709a35388a5445193550f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTerminalService.js.map","hasSourceURL":false,"isModule":false,"length":21656,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"705","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"071c399a2c0d1e8020dd96c52f6b90c93375586c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTheming.js.map","hasSourceURL":false,"isModule":false,"length":2505,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"706","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js","startLine":0,"startColumn":0,"endLine":219,"endColumn":3,"executionContextId":1,"hash":"2e9e258517870b6b1d11ca11963568b21ba2ebc4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTreeViews.js.map","hasSourceURL":false,"isModule":false,"length":12207,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"707","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"38ded136a852cf0a5c9833b5342091647eb7cecc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadDownloadService.js.map","hasSourceURL":false,"isModule":false,"length":2479,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"708","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"2b81acd9114d77053b95a4bc26be3ec146b5a0a0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTelemetry.js.map","hasSourceURL":false,"isModule":false,"length":2817,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"709","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js","startLine":0,"startColumn":0,"endLine":74,"endColumn":3,"executionContextId":1,"hash":"2e24363401ce0cfa7a6ad24133e4f43e38420f63","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadUrls.js.map","hasSourceURL":false,"isModule":false,"length":4173,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"710","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js","startLine":0,"startColumn":0,"endLine":66,"endColumn":3,"executionContextId":1,"hash":"0a9c6e0a6e3a73f31483259a30e5457a170f0092","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadWindow.js.map","hasSourceURL":false,"isModule":false,"length":3971,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"711","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js","startLine":0,"startColumn":0,"endLine":748,"endColumn":3,"executionContextId":1,"hash":"016d1dc6a2c4f5360154d13839add2eb1fcde336","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadWebview.js.map","hasSourceURL":false,"isModule":false,"length":40380,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"712","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js","startLine":0,"startColumn":0,"endLine":406,"endColumn":3,"executionContextId":1,"hash":"0e72a2204a1f3a312003a7aa5b80d3432aaf3022","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadComments.js.map","hasSourceURL":false,"isModule":false,"length":19410,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425101999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"713","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js","startLine":0,"startColumn":0,"endLine":191,"endColumn":3,"executionContextId":1,"hash":"2f49287367922f4f68383c4e94f939527373205b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadWorkspace.js.map","hasSourceURL":false,"isModule":false,"length":12341,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"714","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"12f819445b776c000eeac6b7a3f1330556ad668a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadLabelService.js.map","hasSourceURL":false,"isModule":false,"length":2904,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"715","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js","startLine":0,"startColumn":0,"endLine":250,"endColumn":3,"executionContextId":1,"hash":"1be8fb420a18d08a52861cc47012e8cd66e8c424","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadNotebook.js.map","hasSourceURL":false,"isModule":false,"length":14450,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"716","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js","startLine":0,"startColumn":0,"endLine":653,"endColumn":3,"executionContextId":1,"hash":"2b47895d2742982d36f74e8106ce137b22182ab3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTask.js.map","hasSourceURL":false,"isModule":false,"length":29993,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"717","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js","startLine":0,"startColumn":0,"endLine":305,"endColumn":3,"executionContextId":1,"hash":"3ef13a0b41cd0fa01a9b3f068971b4407a310a73","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadAuthentication.js.map","hasSourceURL":false,"isModule":false,"length":17924,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"718","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js","startLine":0,"startColumn":0,"endLine":103,"endColumn":3,"executionContextId":1,"hash":"1b65bcc33e1ab71324efbd4365ff5f244ba54f71","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTunnelService.js.map","hasSourceURL":false,"isModule":false,"length":6254,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"719","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js","startLine":0,"startColumn":0,"endLine":66,"endColumn":3,"executionContextId":1,"hash":"38ae2523a1c8d996561d477f48193bf7445cfe28","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainThreadTimeline.js.map","hasSourceURL":false,"isModule":false,"length":4194,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"720","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js","startLine":0,"startColumn":0,"endLine":236,"endColumn":3,"executionContextId":1,"hash":"36d8004862e7f37642eb465f0ad671df6341b67e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"apiCommands.js.map","hasSourceURL":false,"isModule":false,"length":12310,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"721","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/configuration.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":3,"executionContextId":1,"hash":"27afb4d10b34e2547f03a61684af0a863d51ef51","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configuration.js.map","hasSourceURL":false,"isModule":false,"length":889,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102000,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"722","url":"file:///Users/roblou/code/vscode/out/vs/base/common/numbers.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"3deb1fec40ebafa026ec6f2b6169e2483b3f7e15","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"numbers.js.map","hasSourceURL":false,"isModule":false,"length":1474,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"723","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"2750da4626fca51949859a8288c29655606c22d1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"getIconClasses.js.map","hasSourceURL":false,"isModule":false,"length":4055,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"724","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js","startLine":0,"startColumn":0,"endLine":13,"endColumn":3,"executionContextId":1,"hash":"1f108d1a10e066725d4b46034b92ae92737f62d2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewlet.js.map","hasSourceURL":false,"isModule":false,"length":1027,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"725","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/views.js","startLine":0,"startColumn":0,"endLine":212,"endColumn":3,"executionContextId":1,"hash":"12b94c3021c4d2d16e7100c3699f3e71052d20ab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"views.js.map","hasSourceURL":false,"isModule":false,"length":11085,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"726","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js","startLine":0,"startColumn":0,"endLine":25,"endColumn":3,"executionContextId":1,"hash":"3878dfc27844c066216fe5b675aa761313d63f98","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickaccess.js.map","hasSourceURL":false,"isModule":false,"length":2021,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"727","url":"file:///Users/roblou/code/vscode/out/vs/base/common/collections.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":3,"executionContextId":1,"hash":"1e6ccfa76f483f082b0f5d144674a0e3713919c0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"collections.js.map","hasSourceURL":false,"isModule":false,"length":3780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"728","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"054bcdba11068b5d071f6ae76d1a8c7340b9ac98","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"panelService.js.map","hasSourceURL":false,"isModule":false,"length":779,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102001,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"729","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"284baa661fe4824c46821c0137a4c86b7ec4def2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activityBarService.js.map","hasSourceURL":false,"isModule":false,"length":803,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"730","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"31d4e2373660671e28b50c2a710c25ed818b6d60","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configuration.js.map","hasSourceURL":false,"isModule":false,"length":3177,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"731","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js","startLine":0,"startColumn":0,"endLine":896,"endColumn":3,"executionContextId":1,"hash":"1455f4ce4f6109774f4900a08782925d014f26c1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"treeView.js.map","hasSourceURL":false,"isModule":false,"length":48402,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"732","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js","startLine":0,"startColumn":0,"endLine":169,"endColumn":3,"executionContextId":1,"hash":"39a5e81b3df6f0bc4fbb5a941b519a654a2cdfc8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewlet.js.map","hasSourceURL":false,"isModule":false,"length":9634,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"733","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":3,"executionContextId":1,"hash":"3ee5e5c27e43ebb5033686215a9c24cb2e72a01a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scm.js.map","hasSourceURL":false,"isModule":false,"length":1254,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","startLine":0,"startColumn":0,"endLine":1144,"endColumn":3,"executionContextId":1,"hash":"074160481217ba1308bd2eb93c46314968904887","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewPaneContainer.js.map","hasSourceURL":false,"isModule":false,"length":65126,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.49","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/media/paneviewlet.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.66746,"wallTime":1588425101.545939,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"735","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js","startLine":0,"startColumn":0,"endLine":512,"endColumn":3,"executionContextId":1,"hash":"00c3f687267ec0fe25d3788f648942a022cd171b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"grid.js.map","hasSourceURL":false,"isModule":false,"length":23890,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.50","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.669271,"wallTime":1588425101.54775,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102002,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","startLine":0,"startColumn":0,"endLine":1313,"endColumn":3,"executionContextId":1,"hash":"36633ddc8523e7466714b66590a2918e4e64fd65","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorGroupView.js.map","hasSourceURL":false,"isModule":false,"length":72233,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102003,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.51","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editorgroupview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.672378,"wallTime":1588425101.550857,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102003,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"737","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js","startLine":0,"startColumn":0,"endLine":522,"endColumn":3,"executionContextId":1,"hash":"1d6b79f3318611df6b3ec6d59be481ac0d715136","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorGroup.js.map","hasSourceURL":false,"isModule":false,"length":24619,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102003,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"738","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js","startLine":0,"startColumn":0,"endLine":153,"endColumn":3,"executionContextId":1,"hash":"219b15fd8f8dc83e358ad5e5aae9dee729c41ba9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"centeredViewLayout.js.map","hasSourceURL":false,"isModule":false,"length":7124,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102003,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"739","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js","startLine":0,"startColumn":0,"endLine":600,"endColumn":3,"executionContextId":1,"hash":"1f0a28bd6be64eed1d369987adecbff653609b48","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dnd.js.map","hasSourceURL":false,"isModule":false,"length":30576,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102003,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","startLine":0,"startColumn":0,"endLine":355,"endColumn":3,"executionContextId":1,"hash":"0ee4be7791397ba31e18f769982a8dfc02fed9cb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"compositePart.js.map","hasSourceURL":false,"isModule":false,"length":18737,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102003,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.52","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/media/compositepart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.676129,"wallTime":1588425101.554607,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"741","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js","startLine":0,"startColumn":0,"endLine":734,"endColumn":3,"executionContextId":1,"hash":"339ce60a26450df83d324aa7142a3d5d4afd76be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.contribution.js.map","hasSourceURL":false,"isModule":false,"length":59588,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"742","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js","startLine":0,"startColumn":0,"endLine":519,"endColumn":3,"executionContextId":1,"hash":"2e9c56cd3f4757f219402ed72ea402b914b127f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorDropTarget.js.map","hasSourceURL":false,"isModule":false,"length":30212,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.53","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editordroptarget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.681717,"wallTime":1588425101.560195,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"743","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/activity.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1e6f15ac019206406e543a952c7e9664102a7cfb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activity.js.map","hasSourceURL":false,"isModule":false,"length":704,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"744","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js","startLine":0,"startColumn":0,"endLine":431,"endColumn":3,"executionContextId":1,"hash":"38c97a8e752b301632a567d47000b6535c5af1f9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activitybarActions.js.map","hasSourceURL":false,"isModule":false,"length":24514,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.54","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/media/activityaction.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.683195,"wallTime":1588425101.561673,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"745","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":3,"executionContextId":1,"hash":"2fed202d8c15b4ee229ac1ff78bd3cc31a7a453e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activity.js.map","hasSourceURL":false,"isModule":false,"length":4585,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"746","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js","startLine":0,"startColumn":0,"endLine":672,"endColumn":3,"executionContextId":1,"hash":"3ee539ff29eb20b37e14300b4dad8e5c40b19e90","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"compositeBar.js.map","hasSourceURL":false,"isModule":false,"length":34313,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"747","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js","startLine":0,"startColumn":0,"endLine":545,"endColumn":3,"executionContextId":1,"hash":"0d2114509cc6d3834a965376abfa484e267bee4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"compositeBarActions.js.map","hasSourceURL":false,"isModule":false,"length":29211,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"748","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js","startLine":0,"startColumn":0,"endLine":291,"endColumn":3,"executionContextId":1,"hash":"0cf358be12a7f53c54432414892d7e140efff2e8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"panelActions.js.map","hasSourceURL":false,"isModule":false,"length":16363,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"749","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":3,"executionContextId":1,"hash":"28fd866d22cf0bba79bde2fccd622f8217e3d872","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewMenuActions.js.map","hasSourceURL":false,"isModule":false,"length":4554,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"750","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/panel.js","startLine":0,"startColumn":0,"endLine":13,"endColumn":3,"executionContextId":1,"hash":"0846607b670acdea1733511eb4aa52f848dfdd2b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"panel.js.map","hasSourceURL":false,"isModule":false,"length":1013,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"751","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js","startLine":0,"startColumn":0,"endLine":22,"endColumn":3,"executionContextId":1,"hash":"1571aeb27a5907c023a2cce46d8a105134e22e22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codiconLabel.js.map","hasSourceURL":false,"isModule":false,"length":1114,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102004,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"752","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js","startLine":0,"startColumn":0,"endLine":43,"endColumn":3,"executionContextId":1,"hash":"038317178c53dd18161723e969a1f8ca4f311e78","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorCommon.js.map","hasSourceURL":false,"isModule":false,"length":1647,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"753","url":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js","startLine":0,"startColumn":0,"endLine":188,"endColumn":3,"executionContextId":1,"hash":"1cd7df2c4dd5f0e457764ac317a4e4c12d3b4b9f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonEdit.js.map","hasSourceURL":false,"isModule":false,"length":9364,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"754","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"102bd7e0046cba2b376afa82869a3f8d5e08f689","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bulkEditService.js.map","hasSourceURL":false,"isModule":false,"length":797,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"755","url":"file:///Users/roblou/code/vscode/out/vs/base/common/json.js","startLine":0,"startColumn":0,"endLine":1149,"endColumn":3,"executionContextId":1,"hash":"26ed0a988838a24855e44357752d31dd3d409768","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"json.js.map","hasSourceURL":false,"isModule":false,"length":51554,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"756","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":3,"executionContextId":1,"hash":"378548753883da2133e054bd949b668846929796","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"statusbar.js.map","hasSourceURL":false,"isModule":false,"length":1116,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"757","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"0cb8acd85ecf93c404783833a2126eac4c764711","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorBrowser.js.map","hasSourceURL":false,"isModule":false,"length":6752,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"758","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":3,"executionContextId":1,"hash":"10a53ac84309a10967250940b0de53033653d450","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selection.js.map","hasSourceURL":false,"isModule":false,"length":6055,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"759","url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedText.js","startLine":0,"startColumn":0,"endLine":55,"endColumn":3,"executionContextId":1,"hash":"14b331a53d22ac164990a4f8303187ee35d41e6a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linkedText.js.map","hasSourceURL":false,"isModule":false,"length":2603,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"760","url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","startLine":0,"startColumn":0,"endLine":134,"endColumn":3,"executionContextId":1,"hash":"31610d32653ab46d4c144b7f5960a69d4b0f60e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linkedList.js.map","hasSourceURL":false,"isModule":false,"length":4463,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"761","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js","startLine":0,"startColumn":0,"endLine":483,"endColumn":3,"executionContextId":1,"hash":"0212eef438f9534b4c06d8f08609fea97f7af0f3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeEditorServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":23120,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"762","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"32f51e303276897756f381a144dd1fe67e6be47a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"decorations.js.map","hasSourceURL":false,"isModule":false,"length":801,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"763","url":"file:///Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"31a66928806465b51cd6ffe8066ff4b16060ef7a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.js.map","hasSourceURL":false,"isModule":false,"length":3698,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"764","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":3,"executionContextId":1,"hash":"02e984d6677cb80d50b16e03a8aaf5b702ef18fd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resourceEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":6196,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102005,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"765","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"3b6724cd8efb9a4a051b7bd84371b535079d1a99","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":4623,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"766","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js","startLine":0,"startColumn":0,"endLine":361,"endColumn":3,"executionContextId":1,"hash":"3378286513a41f807e776c569e5eb4c36d5c1d3a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorsObserver.js.map","hasSourceURL":false,"isModule":false,"length":19999,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"767","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js","startLine":0,"startColumn":0,"endLine":248,"endColumn":3,"executionContextId":1,"hash":"2447f0370bed5bcc820a2cecb889efe73649ea08","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dialog.js.map","hasSourceURL":false,"isModule":false,"length":14399,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.55","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.701535,"wallTime":1588425101.580013,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"768","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":3,"executionContextId":1,"hash":"08eb59d3799b136130d16474a6e19a862f166a5f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"untitledTextEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":6380,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"769","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"19a597538bbe8dc307de703e1fceb64d7acf0012","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resourceEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":2555,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"770","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js","startLine":0,"startColumn":0,"endLine":58,"endColumn":3,"executionContextId":1,"hash":"0532f52e2ffa320d617e102302b7921568be881e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorAssociationsSetting.js.map","hasSourceURL":false,"isModule":false,"length":3452,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"771","url":"file:///Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"34353afca8dcbe38763525d25b9bfda32d10a695","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingParser.js.map","hasSourceURL":false,"isModule":false,"length":4615,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"772","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js","startLine":0,"startColumn":0,"endLine":57,"endColumn":3,"executionContextId":1,"hash":"3e7ab7fb762e36ed53c21fa4c24b070c43c2da8f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferences.js.map","hasSourceURL":false,"isModule":false,"length":3189,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"773","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js","startLine":0,"startColumn":0,"endLine":750,"endColumn":3,"executionContextId":1,"hash":"2fa865f06fa3941e130324cc74a10cbd71d7ce0c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":43273,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"774","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"30c8eff771d195f71d6d8d566ca8a61036bb498d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":7172,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"775","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js","startLine":0,"startColumn":0,"endLine":965,"endColumn":3,"executionContextId":1,"hash":"052d2160406969d0249bdf4f6429073f2a051683","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesModels.js.map","hasSourceURL":false,"isModule":false,"length":46425,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"776","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":3,"executionContextId":1,"hash":"1c7b7e00aae9383d2a4a5e058b5dd3770b6fbdfd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingIO.js.map","hasSourceURL":false,"isModule":false,"length":3296,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"22a80d8f7160bd4f7958351d12040ecf3d78e8cd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractKeybindingService.js.map","hasSourceURL":false,"isModule":false,"length":7954,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"778","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"15e3f54b0cc29ccb0e3af1c8192cd97d18b453f3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dispatchConfig.js.map","hasSourceURL":false,"isModule":false,"length":1237,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102006,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"779","url":"file:///Users/roblou/code/vscode/out/vs/base/common/scanCode.js","startLine":0,"startColumn":0,"endLine":666,"endColumn":3,"executionContextId":1,"hash":"35c4d1a8548a439c5af9a94e235a733357ad7cad","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scanCode.js.map","hasSourceURL":false,"isModule":false,"length":33322,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"780","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panel.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"31ae7a4831f747cc2e03bebe3e250c546ac1e2f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"panel.js.map","hasSourceURL":false,"isModule":false,"length":3107,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"781","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js","startLine":0,"startColumn":0,"endLine":35,"endColumn":3,"executionContextId":1,"hash":"3d3a5e544fdefb0f0bcc70a59580e96255f316f8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resolvedKeybindingItem.js.map","hasSourceURL":false,"isModule":false,"length":1772,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"782","url":"file:///Users/roblou/code/vscode/out/vs/base/common/marshalling.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"157e3c551749295f27a2782b2d536424081f0dce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"marshalling.js.map","hasSourceURL":false,"isModule":false,"length":1901,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"783","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js","startLine":0,"startColumn":0,"endLine":268,"endColumn":3,"executionContextId":1,"hash":"0c8f3b0e6de1ab447894ec8b65583d881c0c7f58","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"untitledTextEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":15285,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"784","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js","startLine":0,"startColumn":0,"endLine":127,"endColumn":3,"executionContextId":1,"hash":"11718ff15313fe2354c4d1b424c460da59ec78d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modeServiceImpl.js.map","hasSourceURL":false,"isModule":false,"length":6379,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"785","url":"file:///Users/roblou/code/vscode/out/vs/base/common/glob.js","startLine":0,"startColumn":0,"endLine":543,"endColumn":3,"executionContextId":1,"hash":"0ae4428329c9d9b262be4e7b1d70f38035b761a5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"glob.js.map","hasSourceURL":false,"isModule":false,"length":23056,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"786","url":"file:///Users/roblou/code/vscode/out/vs/base/common/mime.js","startLine":0,"startColumn":0,"endLine":279,"endColumn":3,"executionContextId":1,"hash":"326538196a1f3a1e25fc399162a2a4ea19b11dbe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mime.js.map","hasSourceURL":false,"isModule":false,"length":12432,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"787","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js","startLine":0,"startColumn":0,"endLine":799,"endColumn":3,"executionContextId":1,"hash":"286cc05d90c757e00b20e4269f5b4fcb20dc501f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorThemeData.js.map","hasSourceURL":false,"isModule":false,"length":38514,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"788","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js","startLine":0,"startColumn":0,"endLine":299,"endColumn":3,"executionContextId":1,"hash":"38d2712908e0f6214a03dff3370241bb52459416","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileIconThemeData.js.map","hasSourceURL":false,"isModule":false,"length":15777,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"789","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js","startLine":0,"startColumn":0,"endLine":223,"endColumn":3,"executionContextId":1,"hash":"3c774b1b421be71e0d9481bf756865b90efdb82f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileIconThemeSchema.js.map","hasSourceURL":false,"isModule":false,"length":12084,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"790","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js","startLine":0,"startColumn":0,"endLine":231,"endColumn":3,"executionContextId":1,"hash":"27e9f4626c5ab70b19f37a71517767f95d6c4e44","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themeExtensionPoints.js.map","hasSourceURL":false,"isModule":false,"length":13527,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"791","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"2e4e0366244bd99c2fa67ae94c242ccf27dd3b8c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"productIconThemeData.js.map","hasSourceURL":false,"isModule":false,"length":11892,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"792","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js","startLine":0,"startColumn":0,"endLine":232,"endColumn":3,"executionContextId":1,"hash":"255673183a29292244aacd4a1c8a9838773d345b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorThemeSchema.js.map","hasSourceURL":false,"isModule":false,"length":9377,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"793","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"1e74d4f97c31438a266a78e7aaffbfb156acf1b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"productIconThemeSchema.js.map","hasSourceURL":false,"isModule":false,"length":4613,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"794","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js","startLine":0,"startColumn":0,"endLine":277,"endColumn":3,"executionContextId":1,"hash":"0e678f043c8d14a80ff797e9c105f4ed71b46960","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themeConfiguration.js.map","hasSourceURL":false,"isModule":false,"length":17341,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"795","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/notifications.js","startLine":0,"startColumn":0,"endLine":474,"endColumn":3,"executionContextId":1,"hash":"2d33ecd989242ac456fc7322a88cf16802e12c2d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notifications.js.map","hasSourceURL":false,"isModule":false,"length":21700,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102007,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"796","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js","startLine":0,"startColumn":0,"endLine":81,"endColumn":3,"executionContextId":1,"hash":"319cc338942b9bb26e4c86e2422df45d0a2b6d0d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workingCopyFileOperationParticipant.js.map","hasSourceURL":false,"isModule":false,"length":4906,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"797","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js","startLine":0,"startColumn":0,"endLine":280,"endColumn":3,"executionContextId":1,"hash":"2f482e5944875aad210a28890a1c861a6b796324","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggest.js.map","hasSourceURL":false,"isModule":false,"length":14996,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"798","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js","startLine":0,"startColumn":0,"endLine":951,"endColumn":3,"executionContextId":1,"hash":"2f0c8ac8916513f71448b35240ecf9a97e66e525","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingsEditor.js.map","hasSourceURL":false,"isModule":false,"length":58088,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.56","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.720628,"wallTime":1588425101.599105,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"799","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":3,"executionContextId":1,"hash":"3da4a70d6c16665d28fb8afb75f22e626b18d46b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesActions.js.map","hasSourceURL":false,"isModule":false,"length":4970,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"800","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js","startLine":0,"startColumn":0,"endLine":1008,"endColumn":3,"executionContextId":1,"hash":"3906fe99430624bd175d1833a12c917c4d6dc43b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesEditor.js.map","hasSourceURL":false,"isModule":false,"length":62332,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"801","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"23a8c42c77a9bd924872ab4ac5ef1bb77c4e6f46","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferences.js.map","hasSourceURL":false,"isModule":false,"length":6340,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"802","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"17d3a41d60d923c83992b4c4aaf9edaa11ad882b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesContribution.js.map","hasSourceURL":false,"isModule":false,"length":10320,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102008,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"803","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js","startLine":0,"startColumn":0,"endLine":1185,"endColumn":3,"executionContextId":1,"hash":"2ab3a0627d3c2e8c2f7b8b178a58a75d430ec1f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"settingsEditor2.js.map","hasSourceURL":false,"isModule":false,"length":69534,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.57","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.7273,"wallTime":1588425101.605777,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"804","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"07e2862f205c513f0c4ef08b5dc6b8337e2d9f7d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"errorTelemetry.js.map","hasSourceURL":false,"isModule":false,"length":2261,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"805","url":"file:///Users/roblou/code/vscode/out/vs/base/common/htmlContent.js","startLine":0,"startColumn":0,"endLine":129,"endColumn":3,"executionContextId":1,"hash":"1efb91e375e3aeb02dde2e079850488a4f2e5360","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"htmlContent.js.map","hasSourceURL":false,"isModule":false,"length":5293,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"806","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js","startLine":0,"startColumn":0,"endLine":184,"endColumn":3,"executionContextId":1,"hash":"08dbdfc129fb4dca7dfb61172c60461d4e5ee833","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInput.js.map","hasSourceURL":false,"isModule":false,"length":10878,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"807","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js","startLine":0,"startColumn":0,"endLine":324,"endColumn":3,"executionContextId":1,"hash":"1fb7cf4e52e050991435737a31c20afe728540d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorExtensions.js.map","hasSourceURL":false,"isModule":false,"length":15442,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"808","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js","startLine":0,"startColumn":0,"endLine":546,"endColumn":3,"executionContextId":1,"hash":"3c4daaf876c5d8012cc8dba97ad40bf72aec711d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewContainerModel.js.map","hasSourceURL":false,"isModule":false,"length":31102,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"809","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js","startLine":0,"startColumn":0,"endLine":133,"endColumn":3,"executionContextId":1,"hash":"321993832f21523c165e14748010880638f892f9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"smartSnippetInserter.js.map","hasSourceURL":false,"isModule":false,"length":6413,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"810","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js","startLine":0,"startColumn":0,"endLine":293,"endColumn":3,"executionContextId":1,"hash":"2926a9b111a7ca407f1d8a30400d664062f69db7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingWidgets.js.map","hasSourceURL":false,"isModule":false,"length":16969,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.58","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/keybindings.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.73298,"wallTime":1588425101.611456,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"811","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js","startLine":0,"startColumn":0,"endLine":154,"endColumn":3,"executionContextId":1,"hash":"2ef0fc2e4be32b2b4794b18aa84fee857864e49d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorWidgets.js.map","hasSourceURL":false,"isModule":false,"length":8912,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"812","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"1be7458a57f6579659b0ce4d232e4637730634bd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":10106,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"813","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js","startLine":0,"startColumn":0,"endLine":250,"endColumn":3,"executionContextId":1,"hash":"102b0e3da2fd3acf056b64e85d445f3c79bf9dc1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookService.js.map","hasSourceURL":false,"isModule":false,"length":12953,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"814","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"2a29cd34098d1caa79a3192637dead5b02041fed","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookCommon.js.map","hasSourceURL":false,"isModule":false,"length":9106,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102009,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"815","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js","startLine":0,"startColumn":0,"endLine":58,"endColumn":3,"executionContextId":1,"hash":"342afe9d60dddb9b6372816d79f01ca25b396243","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"formatting.js.map","hasSourceURL":false,"isModule":false,"length":3847,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","startLine":0,"startColumn":0,"endLine":162,"endColumn":3,"executionContextId":1,"hash":"26a6abb80f2a000b1f6661df80d803983e19f645","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"folding.js.map","hasSourceURL":false,"isModule":false,"length":8691,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"817","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"070a9ad1580495dc18aba1279d5e9f284085fc1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tocProvider.js.map","hasSourceURL":false,"isModule":false,"length":1914,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"818","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"00062dda57f5795527247f813c0852555e0aba92","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customEditor.js.map","hasSourceURL":false,"isModule":false,"length":4626,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"819","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":3,"executionContextId":1,"hash":"3bcb194c82cd6a70523d8e38387fd1b93f3965a3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"streamTransform.js.map","hasSourceURL":false,"isModule":false,"length":1264,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"820","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js","startLine":0,"startColumn":0,"endLine":369,"endColumn":3,"executionContextId":1,"hash":"2ff204da70dd9718574357f4209ff3614a111b5f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"errorTransform.js.map","hasSourceURL":false,"isModule":false,"length":17896,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"821","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js","startLine":0,"startColumn":0,"endLine":258,"endColumn":3,"executionContextId":1,"hash":"0cafa02a43b6f4037a4c270f3a2cab1112afa8a5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findController.js.map","hasSourceURL":false,"isModule":false,"length":13561,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102010,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","startLine":0,"startColumn":0,"endLine":214,"endColumn":3,"executionContextId":1,"hash":"0b7c595531e4ccfc7022ccf27b5f8f8c41b15c1c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"richTransform.js.map","hasSourceURL":false,"isModule":false,"length":11514,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"823","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"34a64df18762f28b55f9c688b7728dfe02fceeb4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickAccess.js.map","hasSourceURL":false,"isModule":false,"length":3402,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"824","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js","startLine":0,"startColumn":0,"endLine":207,"endColumn":3,"executionContextId":1,"hash":"3bff68697956b5cf7de40c00afeb39171a2a1a23","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":12073,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"825","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js","startLine":0,"startColumn":0,"endLine":156,"endColumn":3,"executionContextId":1,"hash":"3c0d9fb42ef5d27052dfe6f91a747cc372d39330","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commandsQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":10311,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"826","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js","startLine":0,"startColumn":0,"endLine":128,"endColumn":3,"executionContextId":1,"hash":"181f019357a64f967ec247000f58a8bb1a6df180","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logsActions.js.map","hasSourceURL":false,"isModule":false,"length":8195,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"827","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":3,"executionContextId":1,"hash":"1b7fab509f390f8e6d7fa1980365875e01b4f168","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logConstants.js.map","hasSourceURL":false,"isModule":false,"length":1091,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"828","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"0c07d3a80e903cbc2cd70797b0cbb0eb4f879786","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"helpQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":5394,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"829","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js","startLine":0,"startColumn":0,"endLine":57,"endColumn":3,"executionContextId":1,"hash":"115d08da5bfcbb5f2e60afa05d087b176f1dd740","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logsDataCleaner.js.map","hasSourceURL":false,"isModule":false,"length":3690,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"830","url":"file:///Users/roblou/code/vscode/out/vs/base/common/filters.js","startLine":0,"startColumn":0,"endLine":714,"endColumn":3,"executionContextId":1,"hash":"01d41ee699e5f76e55423f202273ac1a357db4ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"filters.js.map","hasSourceURL":false,"isModule":false,"length":28411,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"831","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"0d6847c13c2ace4560c164c80df800344f1be1c5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"binaryFileEditor.js.map","hasSourceURL":false,"isModule":false,"length":3772,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"832","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js","startLine":0,"startColumn":0,"endLine":98,"endColumn":3,"executionContextId":1,"hash":"124c6b071a2c48202db174eb19780338397e6484","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileEditorTracker.js.map","hasSourceURL":false,"isModule":false,"length":6625,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"833","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js","startLine":0,"startColumn":0,"endLine":332,"endColumn":3,"executionContextId":1,"hash":"29ba6dcc52312a8760567e35c18582604f153050","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileSaveErrorHandler.js.map","hasSourceURL":false,"isModule":false,"length":22446,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"834","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js","startLine":0,"startColumn":0,"endLine":130,"endColumn":3,"executionContextId":1,"hash":"079f6bb81acc85f5802f572719acb0762538627d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceWatcher.js.map","hasSourceURL":false,"isModule":false,"length":7580,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"835","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js","startLine":0,"startColumn":0,"endLine":346,"endColumn":3,"executionContextId":1,"hash":"3ef20bb534e5d77b0a013d653d5f3feb60d2326a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerService.js.map","hasSourceURL":false,"isModule":false,"length":19977,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"836","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"34783ea37d4c25bd38de5a7883dd114805a21608","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"output.js.map","hasSourceURL":false,"isModule":false,"length":1883,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"837","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js","startLine":0,"startColumn":0,"endLine":494,"endColumn":3,"executionContextId":1,"hash":"21932afe86f335817e6021f2464c3c59450b2ab4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commonEditorConfig.js.map","hasSourceURL":false,"isModule":false,"length":22107,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"838","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"1409602f73fc0216100d8a7a14653e4b017a1f5a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dirtyFilesIndicator.js.map","hasSourceURL":false,"isModule":false,"length":4609,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"839","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js","startLine":0,"startColumn":0,"endLine":645,"endColumn":3,"executionContextId":1,"hash":"2659e8412b4c77c339983ee76ad54a005daffb66","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerView.js.map","hasSourceURL":false,"isModule":false,"length":38897,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"840","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js","startLine":0,"startColumn":0,"endLine":571,"endColumn":3,"executionContextId":1,"hash":"28c32b087db9c06e5e891fe1a94a8b2621bcd0a5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"openEditorsView.js.map","hasSourceURL":false,"isModule":false,"length":34198,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.59","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/media/openeditors.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.749374,"wallTime":1588425101.62785,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"841","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js","startLine":0,"startColumn":0,"endLine":102,"endColumn":3,"executionContextId":1,"hash":"37bd3bb016f3ce0808284967c606544c11ce8ddb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backupRestorer.js.map","hasSourceURL":false,"isModule":false,"length":6423,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"842","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"106eeda18c1a2d921fa4937b2c8382186faf516d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"emptyView.js.map","hasSourceURL":false,"isModule":false,"length":6033,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"843","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js","startLine":0,"startColumn":0,"endLine":1101,"endColumn":3,"executionContextId":1,"hash":"326bb11376f3816e7beea122ae35971f1d04eea5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileActions.js.map","hasSourceURL":false,"isModule":false,"length":59984,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102011,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"844","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js","startLine":0,"startColumn":0,"endLine":647,"endColumn":3,"executionContextId":1,"hash":"10d660ce8bbd374d176720bf3c65e0d92b80d5e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorCommands.js.map","hasSourceURL":false,"isModule":false,"length":36013,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"845","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js","startLine":0,"startColumn":0,"endLine":489,"endColumn":3,"executionContextId":1,"hash":"2ab113b477963200178c0ab61ef49e3f20191072","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileCommands.js.map","hasSourceURL":false,"isModule":false,"length":31807,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"846","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js","startLine":0,"startColumn":0,"endLine":391,"endColumn":3,"executionContextId":1,"hash":"2606f8bd271416647860a4911f46d0b006d603e8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bulkEditPreview.js.map","hasSourceURL":false,"isModule":false,"length":19677,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"847","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"1f6aab868721399e140b36eb84b2a6b4653fa0ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replaceContributions.js.map","hasSourceURL":false,"isModule":false,"length":971,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"848","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js","startLine":0,"startColumn":0,"endLine":306,"endColumn":3,"executionContextId":1,"hash":"274f0ae2820806616b0b518145f412675406c823","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bulkEditPane.js.map","hasSourceURL":false,"isModule":false,"length":18918,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.60","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.758834,"wallTime":1588425101.63731,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"849","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js","startLine":0,"startColumn":0,"endLine":440,"endColumn":3,"executionContextId":1,"hash":"110e2a1d8cc6458e07f558419f47cfbe6d6688c4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findModel.js.map","hasSourceURL":false,"isModule":false,"length":23326,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"850","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"3c872f892345933b0f4dfb028113187359f7778c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"constants.js.map","hasSourceURL":false,"isModule":false,"length":4911,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"851","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"302192f09a1db8570fadd30d2e13d7df3ab1bbc9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"constants.js.map","hasSourceURL":false,"isModule":false,"length":2761,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"852","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js","startLine":0,"startColumn":0,"endLine":545,"endColumn":3,"executionContextId":1,"hash":"1cb3dc595d962aaf3c744107058fccd509b8be77","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchWidget.js.map","hasSourceURL":false,"isModule":false,"length":31697,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"853","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"38666a887599e3876a85c0b82f98dc001a602523","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchHistoryService.js.map","hasSourceURL":false,"isModule":false,"length":3407,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"854","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js","startLine":0,"startColumn":0,"endLine":869,"endColumn":3,"executionContextId":1,"hash":"36f8c3963c26bcf709ce6db4a5bcae9404e7a455","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchActions.js.map","hasSourceURL":false,"isModule":false,"length":45105,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"855","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"361ccb27765e01d213b7fbdd79b998fc17b98610","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"search.js.map","hasSourceURL":false,"isModule":false,"length":5580,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"856","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js","startLine":0,"startColumn":0,"endLine":246,"endColumn":3,"executionContextId":1,"hash":"0def763630852c980b8335876c4b17e02606444f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"symbolsQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":15661,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"857","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js","startLine":0,"startColumn":0,"endLine":1097,"endColumn":3,"executionContextId":1,"hash":"1bd46b5b9c96e5f6604c69e8be2f2ce01798e111","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchModel.js.map","hasSourceURL":false,"isModule":false,"length":53497,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"858","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js","startLine":0,"startColumn":0,"endLine":203,"endColumn":3,"executionContextId":1,"hash":"17ec1b30922a10ca42873cc73b7126c92b32fa8e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gotoSymbolQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":11710,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"859","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js","startLine":0,"startColumn":0,"endLine":132,"endColumn":3,"executionContextId":1,"hash":"068bd7f7845803846a0ae537a87938ef62733313","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gotoLineQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":7390,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"860","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js","startLine":0,"startColumn":0,"endLine":729,"endColumn":3,"executionContextId":1,"hash":"358abceb215ffb0302bcd5a5346e17a14bce373d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"anythingQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":46337,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.61","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/media/anythingQuickAccess.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.769705,"wallTime":1588425101.64818,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"861","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js","startLine":0,"startColumn":0,"endLine":25,"endColumn":3,"executionContextId":1,"hash":"3146d6c976a69ad009867a906c93958c3739935e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchIcons.js.map","hasSourceURL":false,"isModule":false,"length":2630,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"862","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js","startLine":0,"startColumn":0,"endLine":228,"endColumn":3,"executionContextId":1,"hash":"12a0b3f83cb90c1854ffd37444347a793594326e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchEditorActions.js.map","hasSourceURL":false,"isModule":false,"length":14068,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.62","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.771431,"wallTime":1588425101.649906,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"863","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js","startLine":0,"startColumn":0,"endLine":555,"endColumn":3,"executionContextId":1,"hash":"1cac793e9a5f401653a826e9bd158f6351e55d45","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchEditor.js.map","hasSourceURL":false,"isModule":false,"length":35217,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"864","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js","startLine":0,"startColumn":0,"endLine":229,"endColumn":3,"executionContextId":1,"hash":"387acdcb437ac30f0083cabc8beba44a0bdee211","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchEditorSerialization.js.map","hasSourceURL":false,"isModule":false,"length":12065,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"865","url":"file:///Users/roblou/code/vscode/out/vs/base/common/iterator.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"379fd6b66129bed440c1eb038300b8e5301724ac","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"iterator.js.map","hasSourceURL":false,"isModule":false,"length":2859,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"866","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"28c4b1ef59cacc1f1a8eede533ee103a54def85b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"aria.js.map","hasSourceURL":false,"isModule":false,"length":2933,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102012,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.63","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.775904,"wallTime":1588425101.654379,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"867","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/labels.js","startLine":0,"startColumn":0,"endLine":429,"endColumn":3,"executionContextId":1,"hash":"0e5ec995a11485b70e953539152b51f160effb62","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"labels.js.map","hasSourceURL":false,"isModule":false,"length":23057,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"868","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js","startLine":0,"startColumn":0,"endLine":178,"endColumn":3,"executionContextId":1,"hash":"0a30da51403510d4143342f446c7d00a2b4d0c8a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"patternInputWidget.js.map","hasSourceURL":false,"isModule":false,"length":9107,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"869","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js","startLine":0,"startColumn":0,"endLine":331,"endColumn":3,"executionContextId":1,"hash":"2e0d038e071331fd383bc8879939ba526aea03c9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchResultsView.js.map","hasSourceURL":false,"isModule":false,"length":19159,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"870","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js","startLine":0,"startColumn":0,"endLine":382,"endColumn":3,"executionContextId":1,"hash":"018749370764800a03d102d41d373036474562b9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"queryBuilder.js.map","hasSourceURL":false,"isModule":false,"length":22386,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"871","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js","startLine":0,"startColumn":0,"endLine":284,"endColumn":3,"executionContextId":1,"hash":"21e434ab9ba6583e70b511d4a524e34e4a991630","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":17412,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"872","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/memento.js","startLine":0,"startColumn":0,"endLine":79,"endColumn":3,"executionContextId":1,"hash":"05b076796737ecbe740bf897b4f97de06b638dfd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"memento.js.map","hasSourceURL":false,"isModule":false,"length":3286,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"873","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"216575553afdbc74118fdf88c2547b3411742af0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replace.js.map","hasSourceURL":false,"isModule":false,"length":780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"874","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js","startLine":0,"startColumn":0,"endLine":174,"endColumn":3,"executionContextId":1,"hash":"20098c674970da4b08589e4e7d27cb6e38edfe04","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"activity.js.map","hasSourceURL":false,"isModule":false,"length":10008,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"875","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js","startLine":0,"startColumn":0,"endLine":1152,"endColumn":3,"executionContextId":1,"hash":"2984e38003640dca3fc27f2b1fef543512e161d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dirtydiffDecorator.js.map","hasSourceURL":false,"isModule":false,"length":59799,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.64","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/media/dirtydiffDecorator.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.785665,"wallTime":1588425101.66414,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"876","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js","startLine":0,"startColumn":0,"endLine":149,"endColumn":3,"executionContextId":1,"hash":"377afafa65540b23253981834c9814ea1b767761","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scmService.js.map","hasSourceURL":false,"isModule":false,"length":6920,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102013,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"877","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js","startLine":0,"startColumn":0,"endLine":259,"endColumn":3,"executionContextId":1,"hash":"33594d648bb709a0192eaabd8e2cd3b572b6d015","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mainPane.js.map","hasSourceURL":false,"isModule":false,"length":15208,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"878","url":"file:///Users/roblou/code/vscode/out/vs/base/common/decorators.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":3,"executionContextId":1,"hash":"1e12d4b55cb0431e7fcbce9d0843ab7a1c056421","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"decorators.js.map","hasSourceURL":false,"isModule":false,"length":5895,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"879","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js","startLine":0,"startColumn":0,"endLine":950,"endColumn":3,"executionContextId":1,"hash":"04b2fa023b6b21ec7c8855fdb8bce0c47d678c3b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"repositoryPane.js.map","hasSourceURL":false,"isModule":false,"length":58077,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"880","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js","startLine":0,"startColumn":0,"endLine":333,"endColumn":3,"executionContextId":1,"hash":"16b9c2d99c9a9bee05f421e8bbf40e2f11f6d6f3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breakpointWidget.js.map","hasSourceURL":false,"isModule":false,"length":20397,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.65","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/breakpointWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.79228,"wallTime":1588425101.670754,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"881","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":3,"executionContextId":1,"hash":"32a36e88a559c7fa4c8050de14a82f2578ff19f9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menus.js.map","hasSourceURL":false,"isModule":false,"length":8672,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"882","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js","startLine":0,"startColumn":0,"endLine":619,"endColumn":3,"executionContextId":1,"hash":"3b50355087a94c6943638a042549a36e5be01188","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breakpointsView.js.map","hasSourceURL":false,"isModule":false,"length":36690,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"883","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js","startLine":0,"startColumn":0,"endLine":458,"endColumn":3,"executionContextId":1,"hash":"3033b39100b721f46e92f2ca35fefede340b55be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugActions.js.map","hasSourceURL":false,"isModule":false,"length":27489,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"884","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js","startLine":0,"startColumn":0,"endLine":905,"endColumn":3,"executionContextId":1,"hash":"3ce2b4de4b262ff349ea25208e120cde7b8ff4e3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"callStackView.js.map","hasSourceURL":false,"isModule":false,"length":48592,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"885","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js","startLine":0,"startColumn":0,"endLine":337,"endColumn":3,"executionContextId":1,"hash":"3863c2938fd3d86e0bbac8194cd656ca647c796a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugToolBar.js.map","hasSourceURL":false,"isModule":false,"length":21730,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.66","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debugToolBar.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.801395,"wallTime":1588425101.679869,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102014,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"886","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js","startLine":0,"startColumn":0,"endLine":498,"endColumn":3,"executionContextId":1,"hash":"0f4ab42b41a869b02a8bc8c7b403ebb83a950b77","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugCommands.js.map","hasSourceURL":false,"isModule":false,"length":29352,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"887","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js","startLine":0,"startColumn":0,"endLine":111,"endColumn":3,"executionContextId":1,"hash":"1384d3d1694b95b162ea868757e1b7097e3c2425","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"statusbarColorProvider.js.map","hasSourceURL":false,"isModule":false,"length":7452,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"888","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js","startLine":0,"startColumn":0,"endLine":1003,"endColumn":3,"executionContextId":1,"hash":"396456d19e3f90eb4d85888081751cde5d98fd04","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugService.js.map","hasSourceURL":false,"isModule":false,"length":63470,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"889","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js","startLine":0,"startColumn":0,"endLine":625,"endColumn":3,"executionContextId":1,"hash":"16c9971295322d095360e76636c536100e2a97d1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"loadedScriptsView.js.map","hasSourceURL":false,"isModule":false,"length":29446,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"890","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"13e9156a68e25d2b5ee02c498f011ce972a72052","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugStatus.js.map","hasSourceURL":false,"isModule":false,"length":5106,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"891","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js","startLine":0,"startColumn":0,"endLine":272,"endColumn":3,"executionContextId":1,"hash":"37422b014191c83d59b572311dd9b9b53a1b45ac","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugEditorActions.js.map","hasSourceURL":false,"isModule":false,"length":14897,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"892","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js","startLine":0,"startColumn":0,"endLine":298,"endColumn":3,"executionContextId":1,"hash":"0b2b76fd8be789f13f4347538630f00876605f33","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watchExpressionsView.js.map","hasSourceURL":false,"isModule":false,"length":18096,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"893","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js","startLine":0,"startColumn":0,"endLine":298,"endColumn":3,"executionContextId":1,"hash":"30d5ec31a916a795597873aaa231da2667fa0325","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"variablesView.js.map","hasSourceURL":false,"isModule":false,"length":17251,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"894","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js","startLine":0,"startColumn":0,"endLine":131,"endColumn":3,"executionContextId":1,"hash":"081f41585338d7376c8aa1498670cf173f98030c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugContentProvider.js.map","hasSourceURL":false,"isModule":false,"length":8116,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102015,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"895","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":3,"executionContextId":1,"hash":"14d0c8720d5d9dd05723c0a7678f9add535aad02","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":7797,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"896","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js","startLine":0,"startColumn":0,"endLine":107,"endColumn":3,"executionContextId":1,"hash":"1be45b5860c518767e1edfb00e49f25b1aa14c19","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"welcomeView.js.map","hasSourceURL":false,"isModule":false,"length":8903,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"897","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js","startLine":0,"startColumn":0,"endLine":95,"endColumn":3,"executionContextId":1,"hash":"25108f8d03adca5c3e4966cc32f8db99310b6823","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugProgress.js.map","hasSourceURL":false,"isModule":false,"length":5926,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"898","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"2b7e345a5fdc93332b924c21065f83ff25c2d5be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersModel.js.map","hasSourceURL":false,"isModule":false,"length":8086,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"899","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js","startLine":0,"startColumn":0,"endLine":440,"endColumn":3,"executionContextId":1,"hash":"0b7855959c2e52c86e9963662a260e373566925e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersViewActions.js.map","hasSourceURL":false,"isModule":false,"length":23808,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"900","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"2ca7e31b691db6392802fb5e266fdf865e182408","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"constants.js.map","hasSourceURL":false,"isModule":false,"length":2163,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"901","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js","startLine":0,"startColumn":0,"endLine":784,"endColumn":3,"executionContextId":1,"hash":"384d9b23801a488604dfc58613c10dc149e42721","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersView.js.map","hasSourceURL":false,"isModule":false,"length":44753,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.67","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/media/markers.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.819304,"wallTime":1588425101.697778,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"902","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"059459d056294eba3c897cf36f60655538b9d060","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"messages.js.map","hasSourceURL":false,"isModule":false,"length":8662,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"903","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":3,"executionContextId":1,"hash":"3597826a0696ccba0edfb64c9bd333b3752ead3a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"exceptionWidget.js.map","hasSourceURL":false,"isModule":false,"length":6574,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.68","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/exceptionWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.82061,"wallTime":1588425101.699084,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"904","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js","startLine":0,"startColumn":0,"endLine":101,"endColumn":3,"executionContextId":1,"hash":"0024dd704bb5ab7b0666d9bb36e6f80937f8a86e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersFileDecorations.js.map","hasSourceURL":false,"isModule":false,"length":5574,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"905","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"081227cf843dd3e862f7c93b13c75d2f7fe46d4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markers.js.map","hasSourceURL":false,"isModule":false,"length":4911,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"906","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","startLine":0,"startColumn":0,"endLine":125,"endColumn":3,"executionContextId":1,"hash":"33c9f00d1050b2925f1cc63da8a91c105541e712","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordHelper.js.map","hasSourceURL":false,"isModule":false,"length":5100,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"907","url":"file:///Users/roblou/code/vscode/out/vs/base/common/history.js","startLine":0,"startColumn":0,"endLine":83,"endColumn":3,"executionContextId":1,"hash":"1e8b88dd4bac360845cb036c07f2fe18342ab319","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"history.js.map","hasSourceURL":false,"isModule":false,"length":2850,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"908","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js","startLine":0,"startColumn":0,"endLine":297,"endColumn":3,"executionContextId":1,"hash":"2b4091d44857eb9a2b42213e0fad9837423cf8e7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugHover.js.map","hasSourceURL":false,"isModule":false,"length":15912,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"909","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js","startLine":0,"startColumn":0,"endLine":29,"endColumn":3,"executionContextId":1,"hash":"3508924a22a9dc3b500423c67f9dca6542a88e18","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"getHover.js.map","hasSourceURL":false,"isModule":false,"length":1847,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102016,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"910","url":"file:///Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js","startLine":0,"startColumn":0,"endLine":104,"endColumn":3,"executionContextId":1,"hash":"054bdf60837c3d0e252b3d7a258e0768045403cb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextScopedHistoryWidget.js.map","hasSourceURL":false,"isModule":false,"length":7343,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"911","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js","startLine":0,"startColumn":0,"endLine":271,"endColumn":3,"executionContextId":1,"hash":"33e5c9bd8dda40a93223856c8d956e801538100e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugActionViewItems.js.map","hasSourceURL":false,"isModule":false,"length":15776,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"912","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js","startLine":0,"startColumn":0,"endLine":199,"endColumn":3,"executionContextId":1,"hash":"03f0b2fe609d040430f61b5cbe1fa051279257e2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linkDetector.js.map","hasSourceURL":false,"isModule":false,"length":11310,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"913","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"2e0da7a37e0ba3d20d81bcd36407a81618d6f9bc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleEditorOptions.js.map","hasSourceURL":false,"isModule":false,"length":2692,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"914","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js","startLine":0,"startColumn":0,"endLine":329,"endColumn":3,"executionContextId":1,"hash":"13086efe713fc47c732f236f3ce521187e56116b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replViewer.js.map","hasSourceURL":false,"isModule":false,"length":17326,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"915","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js","startLine":0,"startColumn":0,"endLine":290,"endColumn":3,"executionContextId":1,"hash":"3c808256063aa0e10d5289464baee7cd0091d0bc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replModel.js.map","hasSourceURL":false,"isModule":false,"length":12898,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"916","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js","startLine":0,"startColumn":0,"endLine":106,"endColumn":3,"executionContextId":1,"hash":"24dc39304e24f5193446e1ca27abd9707e04c213","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewEditorInputFactory.js.map","hasSourceURL":false,"isModule":false,"length":5290,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"917","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js","startLine":0,"startColumn":0,"endLine":105,"endColumn":3,"executionContextId":1,"hash":"20546d856e673b6d2ecda17d36b1e8f847015150","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":4358,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"918","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js","startLine":0,"startColumn":0,"endLine":222,"endColumn":3,"executionContextId":1,"hash":"162bd914a5b3886a2258eeb6c13751d41c3bbd90","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewWorkbenchService.js.map","hasSourceURL":false,"isModule":false,"length":12678,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"919","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js","startLine":0,"startColumn":0,"endLine":163,"endColumn":3,"executionContextId":1,"hash":"15b939f52405a9b8344f3138b2bb6a7847fef9aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewCommands.js.map","hasSourceURL":false,"isModule":false,"length":9328,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"920","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"1b7634b384e1b72d0975851644c04a1c57d8bb6b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"externalUriResolver.js.map","hasSourceURL":false,"isModule":false,"length":2864,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"921","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js","startLine":0,"startColumn":0,"endLine":139,"endColumn":3,"executionContextId":1,"hash":"39d664499185201c2a06c77c8a54f2576207da40","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentService.js.map","hasSourceURL":false,"isModule":false,"length":7951,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"922","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js","startLine":0,"startColumn":0,"endLine":672,"endColumn":3,"executionContextId":1,"hash":"3e46637e31e0acce376bf07e76be969b1c845d22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentsEditorContribution.js.map","hasSourceURL":false,"isModule":false,"length":36387,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.69","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/media/review.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.838204,"wallTime":1588425101.716677,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"923","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js","startLine":0,"startColumn":0,"endLine":131,"endColumn":3,"executionContextId":1,"hash":"2d145ddc358bbbe669ca8700a83e0b6a6b7b4de1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"trustedDomainsFileSystemProvider.js.map","hasSourceURL":false,"isModule":false,"length":7409,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102017,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"924","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js","startLine":0,"startColumn":0,"endLine":187,"endColumn":3,"executionContextId":1,"hash":"0b2990f83b4459833e176b1c83821c26437f4a11","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"trustedDomainsValidator.js.map","hasSourceURL":false,"isModule":false,"length":10847,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"925","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js","startLine":0,"startColumn":0,"endLine":123,"endColumn":3,"executionContextId":1,"hash":"01d74e412d437335224b0f1f12afe686208c7891","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsUtils.js.map","hasSourceURL":false,"isModule":false,"length":8567,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"926","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js","startLine":0,"startColumn":0,"endLine":97,"endColumn":3,"executionContextId":1,"hash":"255301fd507b13b72bfef8fc6d9b9e3e16ab6d34","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"trustedDomains.js.map","hasSourceURL":false,"isModule":false,"length":5288,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"927","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"074af76a0723ff3931ef8683c66b0be2785f9fbb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsInput.js.map","hasSourceURL":false,"isModule":false,"length":2194,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"928","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js","startLine":0,"startColumn":0,"endLine":3167,"endColumn":3,"executionContextId":1,"hash":"0cabcfb33abcf05f0bb9cb8178372d0474173766","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsActions.js.map","hasSourceURL":false,"isModule":false,"length":207830,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.70","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionActions.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.847966,"wallTime":1588425101.726438,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"929","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js","startLine":0,"startColumn":0,"endLine":120,"endColumn":3,"executionContextId":1,"hash":"38a06a65397f8ebf44199ee814ad4af85292afbe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":7079,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"930","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js","startLine":0,"startColumn":0,"endLine":960,"endColumn":3,"executionContextId":1,"hash":"28d9186b555b115912f47ecd27f1b44266671abd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsWorkbenchService.js.map","hasSourceURL":false,"isModule":false,"length":56491,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"931","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js","startLine":0,"startColumn":0,"endLine":43,"endColumn":3,"executionContextId":1,"hash":"019b36249ff897a434313ec783b437df809f4498","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsActivationProgress.js.map","hasSourceURL":false,"isModule":false,"length":2755,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"932","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js","startLine":0,"startColumn":0,"endLine":1143,"endColumn":3,"executionContextId":1,"hash":"1fe9135045a846f1303d1b072a91e0551a7aac07","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionEditor.js.map","hasSourceURL":false,"isModule":false,"length":71032,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.71","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionEditor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.853731,"wallTime":1588425101.732203,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102018,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"933","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"08fdbab2984b7af83b97b6d37fef7d0a7883d22d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsDependencyChecker.js.map","hasSourceURL":false,"isModule":false,"length":6203,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"934","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"027bf2f23cc7b74610dcf793758d932108bb8f37","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsFileTemplate.js.map","hasSourceURL":false,"isModule":false,"length":3276,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"935","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js","startLine":0,"startColumn":0,"endLine":217,"endColumn":3,"executionContextId":1,"hash":"25192a6a8978f1300df3b6a902d0f3e151df3900","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionRecommendationsService.js.map","hasSourceURL":false,"isModule":false,"length":15811,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"936","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"30d57688002c0c43403dc1db026d3d5816e81f99","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteExtensionsInstaller.js.map","hasSourceURL":false,"isModule":false,"length":3991,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"937","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"0c8c8b52353db8df6c300ac01b6a52901c12c36c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customEditorInputFactory.js.map","hasSourceURL":false,"isModule":false,"length":6178,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"938","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js","startLine":0,"startColumn":0,"endLine":214,"endColumn":3,"executionContextId":1,"hash":"15375178369b3cf354a71f642344a5472400253e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customEditorInput.js.map","hasSourceURL":false,"isModule":false,"length":11262,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"939","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js","startLine":0,"startColumn":0,"endLine":500,"endColumn":3,"executionContextId":1,"hash":"2ff4bc736b378ed552b4b853a6de720c522e902f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customEditors.js.map","hasSourceURL":false,"isModule":false,"length":31345,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102019,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"940","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js","startLine":0,"startColumn":0,"endLine":209,"endColumn":3,"executionContextId":1,"hash":"090d1d861023d35977fd45bd8bc9fad2683d30eb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textResourceEditor.js.map","hasSourceURL":false,"isModule":false,"length":13183,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"941","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"279646c92a89ad4a15107a338e35b6984489f3b8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commands.js.map","hasSourceURL":false,"isModule":false,"length":3409,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"942","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"27ba981e3687d9187280e0878ca853e3296aa1f0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"output.js.map","hasSourceURL":false,"isModule":false,"length":2278,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"943","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js","startLine":0,"startColumn":0,"endLine":928,"endColumn":3,"executionContextId":1,"hash":"20baaa25097d6ab72b025fbb49e6d28429110e72","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsViews.js.map","hasSourceURL":false,"isModule":false,"length":60994,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"944","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js","startLine":0,"startColumn":0,"endLine":202,"endColumn":3,"executionContextId":1,"hash":"0fdbc3fb6b2c98264b25a072aa98b73c1f4a78e8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputServices.js.map","hasSourceURL":false,"isModule":false,"length":11700,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"945","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"3c202daf8757971963d6b30e728028e10bfaa4e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestEnabledInput.js.map","hasSourceURL":false,"isModule":false,"length":13997,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.72","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.865737,"wallTime":1588425101.744209,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"946","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js","startLine":0,"startColumn":0,"endLine":71,"endColumn":3,"executionContextId":1,"hash":"39e1606e95cf742c4bf3c2909545399241b0db71","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"logViewer.js.map","hasSourceURL":false,"isModule":false,"length":5545,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"947","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":3,"executionContextId":1,"hash":"2a408e7a72da95d26b0d925c4851d9c63e320952","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionQuery.js.map","hasSourceURL":false,"isModule":false,"length":3340,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"948","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js","startLine":0,"startColumn":0,"endLine":22,"endColumn":3,"executionContextId":1,"hash":"290230694f3ee670524eecf5c117036732bca00b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"errorsWithActions.js.map","hasSourceURL":false,"isModule":false,"length":1141,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"949","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js","startLine":0,"startColumn":0,"endLine":1307,"endColumn":3,"executionContextId":1,"hash":"16fbc2f11be6808e745376229a382cc46aa724f8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalActions.js.map","hasSourceURL":false,"isModule":false,"length":70246,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"950","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"234fd3132ef37bc26d9f0c059cc134b76f46c11f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalMenu.js.map","hasSourceURL":false,"isModule":false,"length":2984,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"951","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js","startLine":0,"startColumn":0,"endLine":171,"endColumn":3,"executionContextId":1,"hash":"2dcbacc4557e4fb77be319dda23d65a30b7aeb59","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalColorRegistry.js.map","hasSourceURL":false,"isModule":false,"length":6594,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"952","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":3,"executionContextId":1,"hash":"08d9190041af1aad6ae98b2c8a25349104f801c0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariable.js.map","hasSourceURL":false,"isModule":false,"length":1383,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"953","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js","startLine":0,"startColumn":0,"endLine":625,"endColumn":3,"executionContextId":1,"hash":"177ca1a520e09f321211b2f9938db3681e157cb1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalService.js.map","hasSourceURL":false,"isModule":false,"length":35582,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102020,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"954","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js","startLine":0,"startColumn":0,"endLine":88,"endColumn":3,"executionContextId":1,"hash":"297c9d6ca91d20e67e4167026105e5880981c99f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":5659,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"955","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js","startLine":0,"startColumn":0,"endLine":114,"endColumn":3,"executionContextId":1,"hash":"173343c055b0eaa36970c3157f77123247eb942e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariableService.js.map","hasSourceURL":false,"isModule":false,"length":6889,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"956","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js","startLine":0,"startColumn":0,"endLine":31,"endColumn":3,"executionContextId":1,"hash":"0bfeb2f2383b847d1d1842a926b803317e611380","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalCommands.js.map","hasSourceURL":false,"isModule":false,"length":1696,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"957","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js","startLine":0,"startColumn":0,"endLine":1396,"endColumn":3,"executionContextId":1,"hash":"3d66e5113d2d3f7d010958e6cd87d7cf3564ae5f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"problemMatcher.js.map","hasSourceURL":false,"isModule":false,"length":65618,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"958","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js","startLine":0,"startColumn":0,"endLine":159,"endColumn":3,"executionContextId":1,"hash":"12ecc69d9ee0b03f56c85fed81fa82575b1be3f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"runAutomaticTasks.js.map","hasSourceURL":false,"isModule":false,"length":9636,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"959","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js","startLine":0,"startColumn":0,"endLine":96,"endColumn":3,"executionContextId":1,"hash":"2559a1a25127f147781dadf8b33655b94fc055a7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonSchema_v1.js.map","hasSourceURL":false,"isModule":false,"length":5022,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"960","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js","startLine":0,"startColumn":0,"endLine":526,"endColumn":3,"executionContextId":1,"hash":"361d75c01047f16d2ca084b7612082a63e5c51ec","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonSchema_v2.js.map","hasSourceURL":false,"isModule":false,"length":28329,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"961","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js","startLine":0,"startColumn":0,"endLine":53,"endColumn":3,"executionContextId":1,"hash":"0fc984f76aebc1eb7fddb150812a50c6344a2691","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tunnelFactory.js.map","hasSourceURL":false,"isModule":false,"length":3369,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"962","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"2153b74c67ee63aa7b6f28745d15751a3975de97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"showCandidate.js.map","hasSourceURL":false,"isModule":false,"length":3164,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"963","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":3,"executionContextId":1,"hash":"2003cc79a6c4670172ae4251b9d9c9da311f8529","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tasksQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":5840,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"964","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js","startLine":0,"startColumn":0,"endLine":95,"endColumn":3,"executionContextId":1,"hash":"002d52911ff76d6b4a9ef64048d388bf4bf34b71","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalFindWidget.js.map","hasSourceURL":false,"isModule":false,"length":5504,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"965","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/dnd.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":3,"executionContextId":1,"hash":"00539f627eb59a6a59bf96c048d9337d282dc8b8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dnd.js.map","hasSourceURL":false,"isModule":false,"length":3540,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"966","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"304158eaa6195b0a7fd0947375e3bfb27edd47a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewsViewlet.js.map","hasSourceURL":false,"isModule":false,"length":7656,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"967","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js","startLine":0,"startColumn":0,"endLine":106,"endColumn":3,"executionContextId":1,"hash":"3a16761ea33002c01299abbf281142c72e78ba88","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerViewItems.js.map","hasSourceURL":false,"isModule":false,"length":7257,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"968","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js","startLine":0,"startColumn":0,"endLine":1013,"endColumn":3,"executionContextId":1,"hash":"1c46c31f0b51b98e246966d639c0990f1ec3d0e4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tunnelView.js.map","hasSourceURL":false,"isModule":false,"length":57213,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.73","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/media/tunnelView.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.88265,"wallTime":1588425101.761122,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"969","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js","startLine":0,"startColumn":0,"endLine":217,"endColumn":3,"executionContextId":1,"hash":"3eeca8e12acc78981b5d856919dcbd3f7d3b3c91","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteIndicator.js.map","hasSourceURL":false,"isModule":false,"length":14054,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"970","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"0d11df9e2e4fa6e7127bc0b10b802b351546e3b9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menuPreventer.js.map","hasSourceURL":false,"isModule":false,"length":2599,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102021,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"971","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js","startLine":0,"startColumn":0,"endLine":267,"endColumn":3,"executionContextId":1,"hash":"3a9c3c42940bb4c93e47b8b69fd80c5f6f537dbe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"accessibility.js.map","hasSourceURL":false,"isModule":false,"length":16916,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.74","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.884726,"wallTime":1588425101.763197,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"972","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js","startLine":0,"startColumn":0,"endLine":93,"endColumn":3,"executionContextId":1,"hash":"362dd5824ca4c612196396267b8bd4c011eb8a71","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffEditorHelper.js.map","hasSourceURL":false,"isModule":false,"length":5835,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"973","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js","startLine":0,"startColumn":0,"endLine":55,"endColumn":3,"executionContextId":1,"hash":"0ad45c9031b50b9b7af6316770287989723eec34","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inspectKeybindings.js.map","hasSourceURL":false,"isModule":false,"length":3734,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"974","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"1e11261f8fad8f2b3d0553c335d8f0b74bc6cbf8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"largeFileOptimizations.js.map","hasSourceURL":false,"isModule":false,"length":4848,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"975","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"331568485109da37126585361de762eb0fc0f02b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gotoLineQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":5495,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"976","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js","startLine":0,"startColumn":0,"endLine":340,"endColumn":3,"executionContextId":1,"hash":"0a9ec103386e08353134595020aae38b17358919","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"saveParticipants.js.map","hasSourceURL":false,"isModule":false,"length":19995,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"977","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":3,"executionContextId":1,"hash":"3eaf1d3c7ac379a37c0550615de6b6a55a52d838","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"semanticTokensHelp.js.map","hasSourceURL":false,"isModule":false,"length":6262,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"978","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js","startLine":0,"startColumn":0,"endLine":494,"endColumn":3,"executionContextId":1,"hash":"2dc2d9ea6f378e5941d18541bd4ca93c7262629f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inspectEditorTokens.js.map","hasSourceURL":false,"isModule":false,"length":30320,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.75","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.890478,"wallTime":1588425101.768949,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"979","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js","startLine":0,"startColumn":0,"endLine":49,"endColumn":3,"executionContextId":1,"hash":"0e9e6c0a5b82bca4611802cc467c671e3fb2111d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleMinimap.js.map","hasSourceURL":false,"isModule":false,"length":3287,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"980","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js","startLine":0,"startColumn":0,"endLine":88,"endColumn":3,"executionContextId":1,"hash":"3cf89a760af46793542495e58f762b3b818fc40e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleMultiCursorModifier.js.map","hasSourceURL":false,"isModule":false,"length":5745,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"981","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js","startLine":0,"startColumn":0,"endLine":49,"endColumn":3,"executionContextId":1,"hash":"151c253e219ddd093a75323164866fed421d0898","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleRenderControlCharacter.js.map","hasSourceURL":false,"isModule":false,"length":3639,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"982","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":3,"executionContextId":1,"hash":"08877953975856807a700de46166f73d64bd49ca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleColumnSelection.js.map","hasSourceURL":false,"isModule":false,"length":6909,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"983","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"2da5aa5b437902477be112fbc494e7de57aeb14b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleRenderWhitespace.js.map","hasSourceURL":false,"isModule":false,"length":3743,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"984","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js","startLine":0,"startColumn":0,"endLine":267,"endColumn":3,"executionContextId":1,"hash":"18db5c5d6f55bd2a367e8de1742013528024677e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toggleWordWrap.js.map","hasSourceURL":false,"isModule":false,"length":13900,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"985","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js","startLine":0,"startColumn":0,"endLine":37,"endColumn":3,"executionContextId":1,"hash":"102a024929076b630807fbb00bd9db8b769b9535","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workbenchReferenceSearch.js.map","hasSourceURL":false,"isModule":false,"length":3140,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"986","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js","startLine":0,"startColumn":0,"endLine":232,"endColumn":3,"executionContextId":1,"hash":"3df3ec58198000e71b325438c95497f11a538056","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetsFile.js.map","hasSourceURL":false,"isModule":false,"length":10322,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102022,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"987","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js","startLine":0,"startColumn":0,"endLine":142,"endColumn":3,"executionContextId":1,"hash":"1345dd3f836f46d135dee4d61d3969ba39d50dae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetCompletionProvider.js.map","hasSourceURL":false,"isModule":false,"length":8927,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"988","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js","startLine":0,"startColumn":0,"endLine":31,"endColumn":3,"executionContextId":1,"hash":"11953e16389502d610ae4de78c97c32e586d3b7b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"showEmmetCommands.js.map","hasSourceURL":false,"isModule":false,"length":1877,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"989","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"3ee9964d5203ce951b812b7737fe4e1b07edd66e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"expandAbbreviation.js.map","hasSourceURL":false,"isModule":false,"length":1831,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"990","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js","startLine":0,"startColumn":0,"endLine":257,"endColumn":3,"executionContextId":1,"hash":"1b00123f749e2762458bf4055ab62f9b05e168be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"formatActionsMultiple.js.map","hasSourceURL":false,"isModule":false,"length":16710,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"991","url":"file:///Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"38e7797d5f592e9f011b898e3d25c5911ec48b87","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"update.config.contribution.js.map","hasSourceURL":false,"isModule":false,"length":3540,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"992","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js","startLine":0,"startColumn":0,"endLine":428,"endColumn":3,"executionContextId":1,"hash":"12d0e99434382c8d538eba30626d2bb661aec250","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"update.js.map","hasSourceURL":false,"isModule":false,"length":27270,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"993","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"25f170d608a4e3cc378bdee4aebea4876f8467ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"formatActionsNone.js.map","hasSourceURL":false,"isModule":false,"length":3528,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"994","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js","startLine":0,"startColumn":0,"endLine":145,"endColumn":3,"executionContextId":1,"hash":"10b590da51810eb26d894bd760f3523f5772d91d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"callHierarchy.js.map","hasSourceURL":false,"isModule":false,"length":6414,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"995","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"00c71ef2a0923a2e3abecca09ec532d75b702faa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingLabel.js.map","hasSourceURL":false,"isModule":false,"length":4356,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.76","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.900874,"wallTime":1588425101.779345,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"996","url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":3,"executionContextId":1,"hash":"395540bc57fc876502f6913b5e947b3e502d9194","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"process.js.map","hasSourceURL":false,"isModule":false,"length":1200,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"997","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js","startLine":0,"startColumn":0,"endLine":614,"endColumn":3,"executionContextId":1,"hash":"12098c548bbe5e4b68b6ceb8195843f271de1130","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"welcomePage.js.map","hasSourceURL":false,"isModule":false,"length":41179,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.77","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.924468,"wallTime":1588425101.802937,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"998","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js","startLine":0,"startColumn":0,"endLine":404,"endColumn":3,"executionContextId":1,"hash":"1a88273865c3c15a36903fa45c6197b804367465","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"callHierarchyPeek.js.map","hasSourceURL":false,"isModule":false,"length":21989,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.78","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.925998,"wallTime":1588425101.804467,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"999","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js","startLine":0,"startColumn":0,"endLine":211,"endColumn":3,"executionContextId":1,"hash":"1e4d0a2080f4566959df20fb35cdce1a761052ab","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"peekView.js.map","hasSourceURL":false,"isModule":false,"length":14640,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.79","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/peekView/media/peekViewWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.927013,"wallTime":1588425101.805482,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1000","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js","startLine":0,"startColumn":0,"endLine":446,"endColumn":3,"executionContextId":1,"hash":"02c31d4759a34e3f1ee9d11c2b3f6d367e51938a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"experimentService.js.map","hasSourceURL":false,"isModule":false,"length":28370,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102023,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1001","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js","startLine":0,"startColumn":0,"endLine":116,"endColumn":3,"executionContextId":1,"hash":"057559fe528606d70e0c63576acdc0870f5f0bdc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"experimentalPrompt.js.map","hasSourceURL":false,"isModule":false,"length":7193,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1002","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":3,"executionContextId":1,"hash":"1c256b427cace2b070b39ddb6b7d6f2e6807fcb4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outline.js.map","hasSourceURL":false,"isModule":false,"length":1425,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1003","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js","startLine":0,"startColumn":0,"endLine":108,"endColumn":3,"executionContextId":1,"hash":"3c407149a4192fa374018ea51269b16125e0c323","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"feedbackStatusbarItem.js.map","hasSourceURL":false,"isModule":false,"length":6633,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1004","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js","startLine":0,"startColumn":0,"endLine":1090,"endColumn":3,"executionContextId":1,"hash":"22a1c841269c3ec1184a16997aadbdf23ec252ac","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSync.js.map","hasSourceURL":false,"isModule":false,"length":69952,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1005","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js","startLine":0,"startColumn":0,"endLine":542,"endColumn":3,"executionContextId":1,"hash":"1ff699146e244395769643bc4e397d995c7dfdf9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outlinePane.js.map","hasSourceURL":false,"isModule":false,"length":30741,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.80","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.933678,"wallTime":1588425101.812147,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1006","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js","startLine":0,"startColumn":0,"endLine":205,"endColumn":3,"executionContextId":1,"hash":"2bb14ce93aae4233488670fb9ed203f60791d12d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncView.js.map","hasSourceURL":false,"isModule":false,"length":13177,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1007","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js","startLine":0,"startColumn":0,"endLine":126,"endColumn":3,"executionContextId":1,"hash":"11103dbb3305b32f7c07240b17851d1a292a678d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"walkThroughInput.js.map","hasSourceURL":false,"isModule":false,"length":6137,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1008","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js","startLine":0,"startColumn":0,"endLine":466,"endColumn":3,"executionContextId":1,"hash":"0dbcc24493b06dfb18ff5d4e1585346c74f61ae1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"walkThroughPart.js.map","hasSourceURL":false,"isModule":false,"length":29331,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.81","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.936311,"wallTime":1588425101.81478,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1009","url":"file:///Users/roblou/code/vscode/out/vs/base/common/assert.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"0292929f92b50b951e401ca29608ae46089e7416","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"assert.js.map","hasSourceURL":false,"isModule":false,"length":937,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1010","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js","startLine":0,"startColumn":0,"endLine":68,"endColumn":3,"executionContextId":1,"hash":"3d2ac4093d7994c57b9c0e6cc95f55020e853441","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorWalkThrough.js.map","hasSourceURL":false,"isModule":false,"length":4216,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1011","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js","startLine":0,"startColumn":0,"endLine":62,"endColumn":3,"executionContextId":1,"hash":"105372012e934c4318ad0e47a141c99e332a5fc3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"walkThroughActions.js.map","hasSourceURL":false,"isModule":false,"length":3673,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1012","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js","startLine":0,"startColumn":0,"endLine":114,"endColumn":3,"executionContextId":1,"hash":"277ecd76a308fd47173d6035ad183b616fc607c7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"walkThroughContentProvider.js.map","hasSourceURL":false,"isModule":false,"length":6496,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102024,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1013","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js","startLine":0,"startColumn":0,"endLine":17,"endColumn":3,"executionContextId":1,"hash":"17bb18057b525c3b459454386cff6ad86983437e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"timeline.js.map","hasSourceURL":false,"isModule":false,"length":1168,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1014","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js","startLine":0,"startColumn":0,"endLine":235,"endColumn":3,"executionContextId":1,"hash":"2970b1e40145f68744af116dcc616e9c4f932b97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"timelineService.js.map","hasSourceURL":false,"isModule":false,"length":11335,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1015","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"2b54398b087c33a9286b1a7f86779c503621ef44","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"documentationContribution.js.map","hasSourceURL":false,"isModule":false,"length":4315,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1016","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js","startLine":0,"startColumn":0,"endLine":1036,"endColumn":3,"executionContextId":1,"hash":"0a6dc5bd80e0ab5b007d35ff42857a250365dadd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"timelinePane.js.map","hasSourceURL":false,"isModule":false,"length":53950,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.82","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/media/timelinePane.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547783.995416,"wallTime":1588425101.873883,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1017","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"155253d067fc95c85c7b3ba3aa64a8e16adabf55","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionsExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":3378,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1018","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"3b47c67c57bd66d865a7dc815115784b37a30b4c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewsWelcomeContribution.js.map","hasSourceURL":false,"isModule":false,"length":2503,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1019","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"11a648dc250f5c9172e3c0bd42fcb70e317d3001","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"documentationExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":3209,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102026,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1020","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"1b55a4cf7f1eb7fc5359fc75992e76175560971b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewsWelcomeExtensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":3669,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1021","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","startLine":0,"startColumn":0,"endLine":35,"endColumn":3,"executionContextId":1,"hash":"223c7ac93692f8dc27e90ff532eea5c21080d805","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"token.js.map","hasSourceURL":false,"isModule":false,"length":1422,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1022","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"218cc619705897526074e005b964a4407b361690","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"TMGrammars.js.map","hasSourceURL":false,"isModule":false,"length":3485,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","startLine":0,"startColumn":0,"endLine":111,"endColumn":3,"executionContextId":1,"hash":"1e3c87cf7794adb475f0b0fa1f8c9bc73d27bbdb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"console.js.map","hasSourceURL":false,"isModule":false,"length":4798,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1024","url":"file:///Users/roblou/code/vscode/out/vs/base/node/paths.js","startLine":0,"startColumn":0,"endLine":14,"endColumn":3,"executionContextId":1,"hash":"14bcc4ee98cad5270f3c96f107dbbf7871ef18e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"paths.js.map","hasSourceURL":false,"isModule":false,"length":932,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1025","url":"/Users/roblou/code/vscode/out/paths.js","startLine":0,"startColumn":0,"endLine":37,"endColumn":66,"executionContextId":1,"hash":"115615001cc5c2cd39fde8be46ac63477dbcc7a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1535,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1026","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"2d499af25557cb7c2b0cb02634ea5a8c51b19137","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"TMGrammarFactory.js.map","hasSourceURL":false,"isModule":false,"length":6007,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1027","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js","startLine":0,"startColumn":0,"endLine":312,"endColumn":3,"executionContextId":1,"hash":"1f3a1378756760af73178faf76595f0561485620","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tokenization.js.map","hasSourceURL":false,"isModule":false,"length":12363,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1028","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js","startLine":0,"startColumn":0,"endLine":168,"endColumn":3,"executionContextId":1,"hash":"141f8c223aedad6950ae31685c89f2ce34ec6653","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lineTokens.js.map","hasSourceURL":false,"isModule":false,"length":6912,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1029","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js","startLine":0,"startColumn":0,"endLine":79,"endColumn":3,"executionContextId":1,"hash":"082327a46258454456231c3cc9976e9864df0e47","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"searchHelpers.js.map","hasSourceURL":false,"isModule":false,"length":4294,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1030","url":"file:///Users/roblou/code/vscode/out/vs/base/test/common/utils.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"0403f77326fba5a63ca47a21989a7761742b1789","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"utils.js.map","hasSourceURL":false,"isModule":false,"length":2499,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1031","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js","startLine":0,"startColumn":0,"endLine":252,"endColumn":3,"executionContextId":1,"hash":"3b5745b71f53488c4e5b72ad91d2c35e37de8172","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsCenter.js.map","hasSourceURL":false,"isModule":false,"length":16532,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.83","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsCenter.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.00993,"wallTime":1588425101.888397,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.84","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsActions.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.011012,"wallTime":1588425101.889479,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1032","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"1707235e411a138a5a41b43569a7c1b050d87848","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsAlerts.js.map","hasSourceURL":false,"isModule":false,"length":3316,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1033","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":3,"executionContextId":1,"hash":"2e215d1b5ff77fb126e13779917b880d6ad80e32","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsStatus.js.map","hasSourceURL":false,"isModule":false,"length":10351,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1034","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js","startLine":0,"startColumn":0,"endLine":185,"endColumn":3,"executionContextId":1,"hash":"1b81db927ac59afb308442c39c04459e47a99671","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsCommands.js.map","hasSourceURL":false,"isModule":false,"length":11100,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1035","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js","startLine":0,"startColumn":0,"endLine":453,"endColumn":3,"executionContextId":1,"hash":"3b92764926348faa4341d159227c6c8c6df4bb6a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsToasts.js.map","hasSourceURL":false,"isModule":false,"length":24733,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102027,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.85","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsToasts.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.014944,"wallTime":1588425101.89341,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","startLine":0,"startColumn":0,"endLine":275,"endColumn":3,"executionContextId":1,"hash":"0130c4938b14036e45302bad3c98f7cd1301a2ec","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"instantiationService.js.map","hasSourceURL":false,"isModule":false,"length":12962,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1037","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js","startLine":0,"startColumn":0,"endLine":312,"endColumn":3,"executionContextId":1,"hash":"05a4c0601476ac490a4047f0af9a2e3d116f93b6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configuration.js.map","hasSourceURL":false,"isModule":false,"length":17717,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1038","url":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js","startLine":0,"startColumn":0,"endLine":700,"endColumn":3,"executionContextId":1,"hash":"0814250f73b20cda73cff1db502880965ea8969a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationModels.js.map","hasSourceURL":false,"isModule":false,"length":37769,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1039","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js","startLine":0,"startColumn":0,"endLine":137,"endColumn":3,"executionContextId":1,"hash":"16fe2b9b909c183f01f3ae38a994e094299ee1d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fontInfo.js.map","hasSourceURL":false,"isModule":false,"length":6605,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1040","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/style.js","startLine":0,"startColumn":0,"endLine":164,"endColumn":3,"executionContextId":1,"hash":"37f61d541ba4cc0760a5484ca78eab2a3a14a701","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"style.js.map","hasSourceURL":false,"isModule":false,"length":7480,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.86","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/media/style.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.019444,"wallTime":1588425101.897911,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1041","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js","startLine":0,"startColumn":0,"endLine":520,"endColumn":3,"executionContextId":1,"hash":"2a15c76522d299407ef33d43a37a6af846b8a6cd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationEditingService.js.map","hasSourceURL":false,"isModule":false,"length":38215,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1042","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js","startLine":0,"startColumn":0,"endLine":119,"endColumn":3,"executionContextId":1,"hash":"04b92211471aefba616f8d5117c11f7c1db2620a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationModels.js.map","hasSourceURL":false,"isModule":false,"length":6680,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1043","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","startLine":0,"startColumn":0,"endLine":1306,"endColumn":3,"executionContextId":1,"hash":"0596fb1d0943172c32dd755e5d516a5d2596e069","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"layout.js.map","hasSourceURL":false,"isModule":false,"length":73818,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1044","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"012b9f0571081b26388869f90ec13c1d66657bb6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"nullMode.js.map","hasSourceURL":false,"isModule":false,"length":2003,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1045","url":"file:///Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js","startLine":0,"startColumn":0,"endLine":185,"endColumn":3,"executionContextId":1,"hash":"1b5addf346c4c322559aa4952421534d256c162c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"driver.js.map","hasSourceURL":false,"isModule":false,"length":8599,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1046","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js","startLine":0,"startColumn":0,"endLine":340,"endColumn":3,"executionContextId":1,"hash":"0f355d1e7338d88624e740c69cb8caeb4fc959c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storage.js.map","hasSourceURL":false,"isModule":false,"length":19169,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1047","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js","startLine":0,"startColumn":0,"endLine":584,"endColumn":3,"executionContextId":1,"hash":"1d8587698990c1622c6328a6bcb64f1c15670f94","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configuration.js.map","hasSourceURL":false,"isModule":false,"length":31105,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1048","url":"file:///Users/roblou/code/vscode/out/vs/base/common/stream.js","startLine":0,"startColumn":0,"endLine":317,"endColumn":3,"executionContextId":1,"hash":"191f456e8f43c9ce326b5ef66320aa6054b6a464","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"stream.js.map","hasSourceURL":false,"isModule":false,"length":11698,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1049","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js","startLine":0,"startColumn":0,"endLine":545,"endColumn":3,"executionContextId":1,"hash":"08aa7c8e321b9b50528b68be373831e344c2e573","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diskFileSystemProvider.js.map","hasSourceURL":false,"isModule":false,"length":27341,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1050","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":3,"executionContextId":1,"hash":"3d9835b32e99e9c80fbda32b6dad5d6329fb5046","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionsContribution.js.map","hasSourceURL":false,"isModule":false,"length":8168,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1051","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/io.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"1ae3bf5605f8f69a4d1062a98c8d7ad359f68749","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"io.js.map","hasSourceURL":false,"isModule":false,"length":5010,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1052","url":"file:///Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":3,"executionContextId":1,"hash":"252dbdf596c1657f58e01de5713f9c8e0c0aa193","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"baseDriver.js.map","hasSourceURL":false,"isModule":false,"length":6121,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1053","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js","startLine":0,"startColumn":0,"endLine":26,"endColumn":3,"executionContextId":1,"hash":"231ed47e4e91e2d91c757be8b38c33dd43e214e2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.electron-browser.js.map","hasSourceURL":false,"isModule":false,"length":1463,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1054","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js","startLine":0,"startColumn":0,"endLine":157,"endColumn":3,"executionContextId":1,"hash":"37e734fa6d815d800f83b0106d18a50f7b9c3612","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":8666,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1055","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js","startLine":0,"startColumn":0,"endLine":183,"endColumn":3,"executionContextId":1,"hash":"2595b0df7da8351f611963fa299a95fe28f81ebc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indentationGuesser.js.map","hasSourceURL":false,"isModule":false,"length":8700,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1056","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js","startLine":0,"startColumn":0,"endLine":346,"endColumn":3,"executionContextId":1,"hash":"03a2f406584c7da84d8faa2c3b9938983d19f11f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileEditorModelManager.js.map","hasSourceURL":false,"isModule":false,"length":20961,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1057","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js","startLine":0,"startColumn":0,"endLine":1068,"endColumn":3,"executionContextId":1,"hash":"361e8ae157f189dd1a3b76b7a0b21c8759b2c694","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"intervalTree.js.map","hasSourceURL":false,"isModule":false,"length":43605,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102028,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1058","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js","startLine":0,"startColumn":0,"endLine":370,"endColumn":3,"executionContextId":1,"hash":"28495e79533467604b31dff5cc583fb75af0aca5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textModelTokens.js.map","hasSourceURL":false,"isModule":false,"length":16254,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1059","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js","startLine":0,"startColumn":0,"endLine":139,"endColumn":3,"executionContextId":1,"hash":"0bcc009c23f38119750ce06872fd986b69ec91e4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textModelEvents.js.map","hasSourceURL":false,"isModule":false,"length":5819,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1060","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","startLine":0,"startColumn":0,"endLine":139,"endColumn":3,"executionContextId":1,"hash":"291f45a0a38442f47e531ad0a7e401e948f116af","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pieceTreeTextBufferBuilder.js.map","hasSourceURL":false,"isModule":false,"length":6404,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1061","url":"file:///Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":3,"executionContextId":1,"hash":"1690fb2b2a05d60f0e18d5ed337c130a755fef91","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingLabels.js.map","hasSourceURL":false,"isModule":false,"length":6851,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1062","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"1017d9836108634932724c29ba2d3e941fe0c25f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"baseResolvedKeybinding.js.map","hasSourceURL":false,"isModule":false,"length":2688,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1063","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","startLine":0,"startColumn":0,"endLine":102,"endColumn":3,"executionContextId":1,"hash":"0df625c7a62afdaa37557e5f4423e6766f468f44","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"usLayoutResolvedKeybinding.js.map","hasSourceURL":false,"isModule":false,"length":4133,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1064","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js","startLine":0,"startColumn":0,"endLine":61,"endColumn":3,"executionContextId":1,"hash":"1fada68a135c814f1afbd6a869482dd73e6c4fd7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"supports.js.map","hasSourceURL":false,"isModule":false,"length":3258,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1065","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js","startLine":0,"startColumn":0,"endLine":459,"endColumn":3,"executionContextId":1,"hash":"14e703540de69a8d67074fac53ddf6745a140098","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textModelSearch.js.map","hasSourceURL":false,"isModule":false,"length":22946,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1066","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uriIpc.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":3,"executionContextId":1,"hash":"0baac7707eceb04e6b0b448b44325a1f3525e2a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"uriIpc.js.map","hasSourceURL":false,"isModule":false,"length":4433,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1067","url":"file:///Users/roblou/code/vscode/out/vs/base/common/normalization.js","startLine":0,"startColumn":0,"endLine":61,"endColumn":3,"executionContextId":1,"hash":"25d952d807a3b27c398cfa2552fa09ac0370df3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"normalization.js.map","hasSourceURL":false,"isModule":false,"length":2684,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1068","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js","startLine":0,"startColumn":0,"endLine":276,"endColumn":3,"executionContextId":1,"hash":"110ddee30145d8db778d85f33820ff71819e646d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"richEditBrackets.js.map","hasSourceURL":false,"isModule":false,"length":11439,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1069","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"088310d328e3efbd7fed825014d19a597778ce9f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHostProtocol.js.map","hasSourceURL":false,"isModule":false,"length":1979,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","startLine":0,"startColumn":0,"endLine":670,"endColumn":3,"executionContextId":1,"hash":"3d3288c9729eb9be0aa5656509c6d00341f2cae8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.net.js.map","hasSourceURL":false,"isModule":false,"length":27649,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1071","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js","startLine":0,"startColumn":0,"endLine":189,"endColumn":3,"executionContextId":1,"hash":"0fb2bcde2abe5c1428b0cb1b73416203617f4233","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extHost.protocol.js.map","hasSourceURL":false,"isModule":false,"length":13900,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1072","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js","startLine":0,"startColumn":0,"endLine":198,"endColumn":3,"executionContextId":1,"hash":"122be8931848b15a07be0efe03a67c3f5ad89367","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionDescriptionRegistry.js.map","hasSourceURL":false,"isModule":false,"length":9624,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1073","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"13408e076437f14e753d92bf183421962f03629c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteConsoleUtil.js.map","hasSourceURL":false,"isModule":false,"length":1389,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1074","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"0274c8d812871954563ba70983f22ece746762dc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionDevOptions.js.map","hasSourceURL":false,"isModule":false,"length":1855,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1075","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js","startLine":0,"startColumn":0,"endLine":512,"endColumn":3,"executionContextId":1,"hash":"24fcde96227891e647987950032e606c4d3c9c53","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionPoints.js.map","hasSourceURL":false,"isModule":false,"length":28170,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1076","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"2736304ca396a6b5397d437b3d4497a650abc5f9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commonProperties.js.map","hasSourceURL":false,"isModule":false,"length":4871,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1077","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js","startLine":0,"startColumn":0,"endLine":58,"endColumn":3,"executionContextId":1,"hash":"3033a1da76a52b346aa4bb2f6a94890c73d7bce4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selectBox.js.map","hasSourceURL":false,"isModule":false,"length":2936,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102029,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.87","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.072364,"wallTime":1588425101.950828,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","startLine":0,"startColumn":0,"endLine":720,"endColumn":3,"executionContextId":1,"hash":"3c0b9d329938d93a48f0ecf6a1fc84523642097a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rpcProtocol.js.map","hasSourceURL":false,"isModule":false,"length":32690,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1079","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"31c5f009080cea240af51d5f8f13e29e276c46cf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extHostCustomers.js.map","hasSourceURL":false,"isModule":false,"length":2466,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1080","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/touch.js","startLine":0,"startColumn":0,"endLine":262,"endColumn":3,"executionContextId":1,"hash":"0a527a4232927a0a6dea48ab73f8a81a21dce22a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"touch.js.map","hasSourceURL":false,"isModule":false,"length":13828,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1081","url":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js","startLine":0,"startColumn":0,"endLine":114,"endColumn":3,"executionContextId":1,"hash":"05844d3d6b578d0d6704d4ee56d467ff5038b05b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextMenuHandler.js.map","hasSourceURL":false,"isModule":false,"length":6113,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.88","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.075836,"wallTime":1588425101.9543,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1082","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"2d2842c85044f9e95823c6bf28f1d5a9454685c4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contextmenu.js.map","hasSourceURL":false,"isModule":false,"length":805,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1083","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js","startLine":0,"startColumn":0,"endLine":670,"endColumn":3,"executionContextId":1,"hash":"2d61f82b86d53e1a0055c78a5017e952564275d0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menu.js.map","hasSourceURL":false,"isModule":false,"length":32665,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.89","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.077692,"wallTime":1588425101.956157,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1084","url":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js","startLine":0,"startColumn":0,"endLine":25,"endColumn":3,"executionContextId":1,"hash":"31d57ad57c87a4aa35b1d82a3b26ee371a8d9332","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"urlService.js.map","hasSourceURL":false,"isModule":false,"length":1362,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1085","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js","startLine":0,"startColumn":0,"endLine":240,"endColumn":3,"executionContextId":1,"hash":"39dc83ce0a266dd161f55a31bc2e8d4c46627a93","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"variableResolver.js.map","hasSourceURL":false,"isModule":false,"length":14359,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1086","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"3e698e7f7e848c2e38fd554b4e122cba7aa2d0e4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInput.js.map","hasSourceURL":false,"isModule":false,"length":2286,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1087","url":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js","startLine":0,"startColumn":0,"endLine":118,"endColumn":3,"executionContextId":1,"hash":"11070659194cb1950ed7f72b8df791354a60201f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configRemotes.js.map","hasSourceURL":false,"isModule":false,"length":4291,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1088","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js","startLine":0,"startColumn":0,"endLine":48,"endColumn":3,"executionContextId":1,"hash":"0564d15911d872232be9c26e7d29a6760e9240bc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"remoteAgentEnvironmentChannel.js.map","hasSourceURL":false,"isModule":false,"length":2677,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102030,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1089","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js","startLine":0,"startColumn":0,"endLine":66,"endColumn":3,"executionContextId":1,"hash":"2c37b90c951b7260672b9746238419a35c590354","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"request.js.map","hasSourceURL":false,"isModule":false,"length":2985,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1090","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js","startLine":0,"startColumn":0,"endLine":210,"endColumn":3,"executionContextId":1,"hash":"3aed940273fd363f07d5f69c0ddaffd72e00c23a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"storage.js.map","hasSourceURL":false,"isModule":false,"length":9771,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1091","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js","startLine":0,"startColumn":0,"endLine":345,"endColumn":3,"executionContextId":1,"hash":"30eb94bb34e7bea813f038e88848103b47d6fa69","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerModel.js.map","hasSourceURL":false,"isModule":false,"length":16528,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1092","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js","startLine":0,"startColumn":0,"endLine":127,"endColumn":3,"executionContextId":1,"hash":"1fbf6f1346a0a9d13706d1ac10a2ab40152b49d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backupTracker.js.map","hasSourceURL":false,"isModule":false,"length":7577,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1093","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js","startLine":0,"startColumn":0,"endLine":238,"endColumn":3,"executionContextId":1,"hash":"0a0c17c575e8025a6985d3d35c524d3d81aac7a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileEditor.js.map","hasSourceURL":false,"isModule":false,"length":15283,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1094","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":3,"executionContextId":1,"hash":"03c13dbb5198a6082cae2a5179766d1001f0183f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"windowsShellHelper.js.map","hasSourceURL":false,"isModule":false,"length":5310,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1095","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/files.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"2ec73c282f495e3c525541206047f9c646b9a2dc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"files.js.map","hasSourceURL":false,"isModule":false,"length":766,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1096","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js","startLine":0,"startColumn":0,"endLine":241,"endColumn":3,"executionContextId":1,"hash":"212dd7104ae7db8b2b8d53830cd29cba4ef29e89","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"baseEditor.js.map","hasSourceURL":false,"isModule":false,"length":11293,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1097","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"3d90e3134d4e35443e5b837e7491352448197fdd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"binaryEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":3423,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1098","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js","startLine":0,"startColumn":0,"endLine":274,"endColumn":3,"executionContextId":1,"hash":"1b4c698c4be8f2ee04c303d17d3273f3229ad87e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalProcess.js.map","hasSourceURL":false,"isModule":false,"length":13835,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1099","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js","startLine":0,"startColumn":0,"endLine":128,"endColumn":3,"executionContextId":1,"hash":"28aacb694a53062a43d206f9684c9d1503a78ed5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalEnvironment.js.map","hasSourceURL":false,"isModule":false,"length":5876,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1100","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js","startLine":0,"startColumn":0,"endLine":336,"endColumn":3,"executionContextId":1,"hash":"3c6f9bcf244ba072029dee5b031bfacd3fa976ff","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalEnvironment.js.map","hasSourceURL":false,"isModule":false,"length":14966,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102031,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1101","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"1af09858644d5c5d68f0565f182247221a845821","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalRemote.js.map","hasSourceURL":false,"isModule":false,"length":3863,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1102","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"35f7bf9f03f39bcc71053165390e97af1fad7f58","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookBrowser.js.map","hasSourceURL":false,"isModule":false,"length":6618,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1103","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"34767221a6388969708583bccb6087d063a51049","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputRenderer.js.map","hasSourceURL":false,"isModule":false,"length":2306,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","startLine":0,"startColumn":0,"endLine":699,"endColumn":3,"executionContextId":1,"hash":"15954a282532026e7ebba7698b7819cd40b012b9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookCellList.js.map","hasSourceURL":false,"isModule":false,"length":40794,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1105","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js","startLine":0,"startColumn":0,"endLine":516,"endColumn":3,"executionContextId":1,"hash":"05418bd61461db1c4ff0e7d25180afd84a797f85","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"backLayerWebView.js.map","hasSourceURL":false,"isModule":false,"length":20804,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1106","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"1d2b5e2a6e6b0301338d58485d56c10732da8ee4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"constants.js.map","hasSourceURL":false,"isModule":false,"length":1309,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1107","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","startLine":0,"startColumn":0,"endLine":740,"endColumn":3,"executionContextId":1,"hash":"070529b666ef768e2c4eece5543fc9045e5434df","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cellRenderer.js.map","hasSourceURL":false,"isModule":false,"length":44001,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1108","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","startLine":0,"startColumn":0,"endLine":66,"endColumn":3,"executionContextId":1,"hash":"38a8bd3a5a0f6c0a2aeb5438afc1b9527790361d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"eventDispatcher.js.map","hasSourceURL":false,"isModule":false,"length":3334,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1109","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"152379689d2673003ce86abb253605494df36719","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookEditorExtensions.js.map","hasSourceURL":false,"isModule":false,"length":1952,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","startLine":0,"startColumn":0,"endLine":690,"endColumn":3,"executionContextId":1,"hash":"15e665cc8155b36e4e42269a98815ef942b60939","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookViewModel.js.map","hasSourceURL":false,"isModule":false,"length":36058,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1111","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js","startLine":0,"startColumn":0,"endLine":224,"endColumn":3,"executionContextId":1,"hash":"33737a5c84e21f796c511d9dc42874301f6eecb9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"baseWebviewElement.js.map","hasSourceURL":false,"isModule":false,"length":11621,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1112","url":"file:///Users/roblou/code/vscode/out/vs/base/node/decoder.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"0764b3bda920f6fb72fcafec8dad78b4051d54d0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"decoder.js.map","hasSourceURL":false,"isModule":false,"length":2485,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1113","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js","startLine":0,"startColumn":0,"endLine":88,"endColumn":3,"executionContextId":1,"hash":"31a2ead78c1cc6c157cb0022797d3aff33238279","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resourceLoader.js.map","hasSourceURL":false,"isModule":false,"length":4584,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1114","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":3,"executionContextId":1,"hash":"1f24182e681b9da66a67e54b44dcd99420170b2a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"walkThroughUtils.js.map","hasSourceURL":false,"isModule":false,"length":1204,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1115","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"089eb33e3e4f6a14635fa9de1acaaa765c4c04b3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewProtocols.js.map","hasSourceURL":false,"isModule":false,"length":1659,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102033,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1116","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"2a58d71d5823538f5be567fcb297daec6d61d4ed","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"portMapping.js.map","hasSourceURL":false,"isModule":false,"length":3335,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"00fc872209168c077fb1ccf85f9be10b1c8da79c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewFindWidget.js.map","hasSourceURL":false,"isModule":false,"length":3512,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1118","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js","startLine":0,"startColumn":0,"endLine":11,"endColumn":3,"executionContextId":1,"hash":"04c6188e3a4857b92c3c3c879939b15617039cc2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selectionClipboard.js.map","hasSourceURL":false,"isModule":false,"length":744,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1119","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js","startLine":0,"startColumn":0,"endLine":208,"endColumn":3,"executionContextId":1,"hash":"035bb923a6d453de6b2946e665ad7cf1783e39eb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dynamicWebviewEditorOverlay.js.map","hasSourceURL":false,"isModule":false,"length":11593,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1120","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js","startLine":0,"startColumn":0,"endLine":149,"endColumn":3,"executionContextId":1,"hash":"235b465e3822712d732030368fa23cd81d690685","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewElement.js.map","hasSourceURL":false,"isModule":false,"length":8557,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1121","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js","startLine":0,"startColumn":0,"endLine":89,"endColumn":3,"executionContextId":1,"hash":"389630f0155d22216bf94729650c7f6b64874498","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themeing.js.map","hasSourceURL":false,"isModule":false,"length":5735,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1122","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":3,"executionContextId":1,"hash":"0607dcf10d8674707f04ff145281666e46611d67","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"webviewIconManager.js.map","hasSourceURL":false,"isModule":false,"length":3948,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1123","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js","startLine":0,"startColumn":0,"endLine":134,"endColumn":3,"executionContextId":1,"hash":"19ad699e7511d74b3bce0b446baef5a75bc91978","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionHostProfiler.js.map","hasSourceURL":false,"isModule":false,"length":6894,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1124","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js","startLine":0,"startColumn":0,"endLine":164,"endColumn":3,"executionContextId":1,"hash":"1264e7cd4bb50ca36252b6316ac702ad5e1f1f90","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsSlowActions.js.map","hasSourceURL":false,"isModule":false,"length":10238,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1125","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js","startLine":0,"startColumn":0,"endLine":160,"endColumn":3,"executionContextId":1,"hash":"141aac4c959d84981cabd0f3256206736a47f08a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"timerService.js.map","hasSourceURL":false,"isModule":false,"length":9871,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102034,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1126","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js","startLine":0,"startColumn":0,"endLine":147,"endColumn":3,"executionContextId":1,"hash":"3d2f0d7f58467de51ff083f4af7bb8b80b696bfd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languageFeatureRegistry.js.map","hasSourceURL":false,"isModule":false,"length":5461,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1127","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"2252324f9d64bb6058f9f24a1215c5002ae0e254","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tokenizationRegistry.js.map","hasSourceURL":false,"isModule":false,"length":3349,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.49","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.134968,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/media/paneviewlet.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.49","timestamp":547784.135031,"dataLength":1239,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.49","timestamp":547784.135143,"encodedDataLength":1239,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.50","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.135701,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.50","timestamp":547784.135787,"dataLength":502,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.50","timestamp":547784.135849,"encodedDataLength":502,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.51","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.13625,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editorgroupview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.51","timestamp":547784.136389,"dataLength":3160,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.51","timestamp":547784.13647,"encodedDataLength":3160,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.52","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.137244,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/media/compositepart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.52","timestamp":547784.137331,"dataLength":578,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.52","timestamp":547784.13741,"encodedDataLength":578,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.53","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.138061,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editordroptarget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102035,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.53","timestamp":547784.13824,"dataLength":995,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.53","timestamp":547784.13829,"encodedDataLength":995,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.54","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.138828,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/media/activityaction.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.54","timestamp":547784.138877,"dataLength":6227,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.54","timestamp":547784.138927,"encodedDataLength":6227,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.55","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.13954,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.55","timestamp":547784.139615,"dataLength":3559,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.55","timestamp":547784.139675,"encodedDataLength":3559,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.56","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.140322,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.56","timestamp":547784.140371,"dataLength":6952,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.56","timestamp":547784.140423,"encodedDataLength":6952,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.57","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.140873,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.57","timestamp":547784.140999,"dataLength":16728,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.57","timestamp":547784.141078,"encodedDataLength":16728,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.58","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.141767,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/keybindings.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.58","timestamp":547784.141807,"dataLength":1251,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.58","timestamp":547784.141853,"encodedDataLength":1251,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102036,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.59","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.142402,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/media/openeditors.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.59","timestamp":547784.142527,"dataLength":2631,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.59","timestamp":547784.142582,"encodedDataLength":2631,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.60","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.143186,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEdit.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.60","timestamp":547784.143291,"dataLength":2573,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.60","timestamp":547784.143346,"encodedDataLength":2573,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.61","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.143726,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/media/anythingQuickAccess.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.61","timestamp":547784.143838,"dataLength":580,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.61","timestamp":547784.14389,"encodedDataLength":580,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.62","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.144209,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.62","timestamp":547784.144283,"dataLength":3972,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.62","timestamp":547784.144348,"encodedDataLength":3972,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.63","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.144743,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.63","timestamp":547784.144866,"dataLength":472,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.63","timestamp":547784.144916,"encodedDataLength":472,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.64","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.145237,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/media/dirtydiffDecorator.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.64","timestamp":547784.145361,"dataLength":1548,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.64","timestamp":547784.14541,"encodedDataLength":1548,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102037,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.65","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.145733,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/breakpointWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.65","timestamp":547784.14579,"dataLength":1082,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.65","timestamp":547784.145857,"encodedDataLength":1082,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.66","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.146203,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/debugToolBar.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.66","timestamp":547784.146248,"dataLength":1419,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.66","timestamp":547784.146327,"encodedDataLength":1419,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.67","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.146887,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/media/markers.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.67","timestamp":547784.147052,"dataLength":6540,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102038,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.67","timestamp":547784.147108,"encodedDataLength":6540,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.68","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.147696,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/media/exceptionWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.68","timestamp":547784.147804,"dataLength":1414,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.68","timestamp":547784.147868,"encodedDataLength":1414,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.69","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.148275,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/media/review.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.69","timestamp":547784.148348,"dataLength":10649,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.69","timestamp":547784.148432,"encodedDataLength":10649,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.70","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.149082,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionActions.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.70","timestamp":547784.149128,"dataLength":2838,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.70","timestamp":547784.149225,"encodedDataLength":2838,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.71","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.149596,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionEditor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.71","timestamp":547784.149662,"dataLength":13750,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.71","timestamp":547784.149744,"encodedDataLength":13750,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.72","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.150346,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.72","timestamp":547784.150446,"dataLength":881,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.72","timestamp":547784.150497,"encodedDataLength":881,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.73","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.150807,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/media/tunnelView.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.73","timestamp":547784.150852,"dataLength":403,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.73","timestamp":547784.150923,"encodedDataLength":403,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.74","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.151225,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.74","timestamp":547784.15127,"dataLength":455,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.74","timestamp":547784.151389,"encodedDataLength":455,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.75","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.151715,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.75","timestamp":547784.151871,"dataLength":1012,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102039,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.75","timestamp":547784.151927,"encodedDataLength":1012,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102041,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.76","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.152538,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102041,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.76","timestamp":547784.152703,"dataLength":1439,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102041,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.76","timestamp":547784.152782,"encodedDataLength":1439,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102041,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.77","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.153225,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.77","timestamp":547784.153318,"dataLength":6676,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.77","timestamp":547784.153414,"encodedDataLength":6676,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.78","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.154145,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.78","timestamp":547784.154197,"dataLength":1060,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.78","timestamp":547784.154273,"encodedDataLength":1060,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.79","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.154687,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/peekView/media/peekViewWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.79","timestamp":547784.155033,"dataLength":1965,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.79","timestamp":547784.155234,"encodedDataLength":1965,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.80","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.156172,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.80","timestamp":547784.156263,"dataLength":1176,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.80","timestamp":547784.156345,"encodedDataLength":1176,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.81","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.156907,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.81","timestamp":547784.157004,"dataLength":4467,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.81","timestamp":547784.157156,"encodedDataLength":4467,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.82","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.157759,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/media/timelinePane.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102042,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.82","timestamp":547784.157851,"dataLength":2893,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.82","timestamp":547784.157943,"encodedDataLength":2893,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.83","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.158358,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsCenter.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.83","timestamp":547784.158404,"dataLength":1117,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.83","timestamp":547784.158484,"encodedDataLength":1117,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.84","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.159085,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsActions.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.84","timestamp":547784.159275,"dataLength":796,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.84","timestamp":547784.159469,"encodedDataLength":796,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.85","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.159953,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsToasts.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.85","timestamp":547784.160025,"dataLength":1545,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.85","timestamp":547784.160221,"encodedDataLength":1545,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.86","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.160635,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/media/style.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.86","timestamp":547784.160706,"dataLength":7803,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.86","timestamp":547784.160799,"encodedDataLength":7803,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.87","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.161465,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.87","timestamp":547784.161527,"dataLength":390,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.87","timestamp":547784.161606,"encodedDataLength":390,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.88","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.16199,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102043,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.88","timestamp":547784.162051,"dataLength":505,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425102043,"metadata":{"connectionId":1,"message":{"seq":912,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js","sourceReference":464396873}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102043,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102043,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/node/ipc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.ts","sourceMapSources":["vs/base/parts/ipc/node/ipc.ts"]},"level":0} {"tag":"cdp.receive","timestamp":1588425102044,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.88","timestamp":547784.162112,"encodedDataLength":505,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102044,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.89","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.163127,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102044,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.89","timestamp":547784.163248,"dataLength":4745,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102044,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.89","timestamp":547784.163328,"encodedDataLength":4745,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102044,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102044,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/common/abstractRemoteAgentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/abstractRemoteAgentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts","sourceMapSources":["vs/workbench/services/remote/common/abstractRemoteAgentService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102045,"metadata":{"connectionId":1,"message":{"seq":913,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102045,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102045,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/remote/node/nodeSocketFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/remote/node/nodeSocketFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/remote/node/nodeSocketFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/remote/node/nodeSocketFactory.ts","sourceMapSources":["vs/platform/remote/node/nodeSocketFactory.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102045,"metadata":{"connectionId":1,"message":{"seq":914,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102045,"metadata":{"connectionId":1,"message":{"seq":915,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/remote/node/nodeSocketFactory.ts","path":"/Users/roblou/code/vscode/src/vs/platform/remote/node/nodeSocketFactory.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102046,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102046,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensionManagement/common/extensionManagementService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensionManagement/common/extensionManagementService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts","sourceMapSources":["vs/workbench/services/extensionManagement/common/extensionManagementService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102046,"metadata":{"connectionId":1,"message":{"seq":916,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102057,"metadata":{"connectionId":0,"message":{"seq":16,"type":"event","event":"output","body":{"category":"stderr","output":"(node:7822) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425102058,"metadata":{"connectionId":0,"message":{"seq":17,"type":"event","event":"output","body":{"category":"stderr","output":"(node:7822) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1128","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js","startLine":0,"startColumn":0,"endLine":154,"endColumn":3,"executionContextId":1,"hash":"2c8ee45014f60608456ec6d2a2ae761d71acc878","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"telemetryOptOut.js.map","hasSourceURL":false,"isModule":false,"length":11357,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1129","url":"/Users/roblou/code/vscode/node_modules/node-pty/lib/index.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":66,"executionContextId":1,"hash":"054492f7494b79ea269ca3c9745578225850ec75","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"index.js.map","hasSourceURL":false,"isModule":false,"length":2098,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1130","url":"/Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js","startLine":0,"startColumn":0,"endLine":277,"endColumn":66,"executionContextId":1,"hash":"1b0c62962822f18b59b491b17541248b62c33aef","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"unixTerminal.js.map","hasSourceURL":false,"isModule":false,"length":10170,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1131","url":"/Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js","startLine":0,"startColumn":0,"endLine":181,"endColumn":66,"executionContextId":1,"hash":"367405ed1c5f26f62245f6825f793df256f12301","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminal.js.map","hasSourceURL":false,"isModule":false,"length":7269,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1132","url":"/Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":66,"executionContextId":1,"hash":"07c98cfd4c3d946f4dcf47ef41599d671974e435","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"eventEmitter2.js.map","hasSourceURL":false,"isModule":false,"length":1789,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1133","url":"/Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js","startLine":0,"startColumn":0,"endLine":16,"endColumn":66,"executionContextId":1,"hash":"2b5501ae39452d997afbf1389fcd320c0315c451","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"utils.js.map","hasSourceURL":false,"isModule":false,"length":777,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1134","url":"internal/console/global.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":0,"executionContextId":1,"hash":"1e15519783013a2b2d543fc90673f44d35b4d2bb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1724,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1135","url":"internal/console/constructor.js","startLine":0,"startColumn":0,"endLine":551,"endColumn":0,"executionContextId":1,"hash":"3119617ca9b446d25bbb5340519545aa0269c1e7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":16737,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102087,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1136","url":"string_decoder.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":0,"executionContextId":1,"hash":"2022cf002caa9e6e3b017b42bb539cb3595d3fb6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3985,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1137","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js","startLine":0,"startColumn":0,"endLine":132,"endColumn":3,"executionContextId":1,"hash":"35324e3f951ac8df23da48a63f46fd1b1d9cfb29","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskDefinitionRegistry.js.map","hasSourceURL":false,"isModule":false,"length":5889,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1138","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"06cf44372cfcb7b871d9e232c2ae3d9063407974","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskSystem.js.map","hasSourceURL":false,"isModule":false,"length":2079,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1139","url":"file:///Users/roblou/code/vscode/out/vs/base/common/parsers.js","startLine":0,"startColumn":0,"endLine":62,"endColumn":3,"executionContextId":1,"hash":"362750216dfe8be607f1825c04cf74b2040437fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"parsers.js.map","hasSourceURL":false,"isModule":false,"length":2307,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1140","url":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js","startLine":0,"startColumn":0,"endLine":201,"endColumn":3,"executionContextId":1,"hash":"002a86af3e59a98a045e4983277590a91df344b6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonFormatter.js.map","hasSourceURL":false,"isModule":false,"length":8608,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1141","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js","startLine":0,"startColumn":0,"endLine":439,"endColumn":3,"executionContextId":1,"hash":"1f055244290f35ba40fa83bb94d43e5d6e912f51","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"problemCollectors.js.map","hasSourceURL":false,"isModule":false,"length":19939,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1142","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js","startLine":0,"startColumn":0,"endLine":354,"endColumn":3,"executionContextId":1,"hash":"0d0172294f5b35e571cee287abca206f4e20543e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskTemplates.js.map","hasSourceURL":false,"isModule":false,"length":11826,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1143","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js","startLine":0,"startColumn":0,"endLine":249,"endColumn":3,"executionContextId":1,"hash":"2cfd186b48f93f806cc81c041df3a77c28501640","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"taskQuickPick.js.map","hasSourceURL":false,"isModule":false,"length":13567,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102088,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1144","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js","startLine":0,"startColumn":0,"endLine":1485,"endColumn":3,"executionContextId":1,"hash":"194e3596217e43400f6d5a6f423b7c48304732fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalTaskSystem.js.map","hasSourceURL":false,"isModule":false,"length":82221,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102114,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1145","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/component.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"3d1cee641fc1b0ce03b2d5b3c7a21837819e61f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"component.js.map","hasSourceURL":false,"isModule":false,"length":1568,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102114,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1146","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/iframe.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"3292936a7465a9385a5d8c4864158b9e61bb2343","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"iframe.js.map","hasSourceURL":false,"isModule":false,"length":4925,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102114,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1147","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js","startLine":0,"startColumn":0,"endLine":871,"endColumn":3,"executionContextId":1,"hash":"1c16fa9a9d7ae159603e19f6a4d0937341c4275a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"menubar.js.map","hasSourceURL":false,"isModule":false,"length":44578,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102114,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1148","url":"file:///Users/roblou/code/vscode/out/vs/base/common/idGenerator.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"30bdff2750c7ce64144ce195863d2e0a0a768d8a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"idGenerator.js.map","hasSourceURL":false,"isModule":false,"length":969,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102143,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102144,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102144,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/remote/common/remoteAgentConnection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAgentConnection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAgentConnection.ts","sourceMapSources":["vs/platform/remote/common/remoteAgentConnection.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102144,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/ports.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/ports.js"},"level":0} {"tag":"dap.send","timestamp":1588425102144,"metadata":{"connectionId":1,"message":{"seq":917,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAgentConnection.ts","path":"/Users/roblou/code/vscode/src/vs/platform/remote/common/remoteAgentConnection.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102144,"metadata":{"connectionId":1,"message":{"seq":918,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js","path":"/Users/roblou/code/vscode/out/vs/platform/remote/common/remoteAgentConnection.js","sourceReference":1754024971}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102145,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js"},"level":0} {"tag":"dap.send","timestamp":1588425102145,"metadata":{"connectionId":1,"message":{"seq":919,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/ports.js","path":"/Users/roblou/code/vscode/out/vs/base/node/ports.js","sourceReference":2035351867}}}},"level":0} {"tag":"dap.send","timestamp":1588425102145,"metadata":{"connectionId":1,"message":{"seq":920,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js","path":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js","sourceReference":2113406120}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102146,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102146,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102146,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/ports.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/ports.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/ports.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/ports.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/ports.ts","sourceMapSources":["vs/base/node/ports.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102146,"metadata":{"connectionId":1,"message":{"seq":921,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/ports.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/ports.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102146,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102146,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/userDataSync/common/storageKeys.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/storageKeys.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/storageKeys.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/userDataSync/common/storageKeys.ts","sourceMapSources":["vs/platform/userDataSync/common/storageKeys.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102146,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425102147,"metadata":{"connectionId":1,"message":{"seq":922,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/storageKeys.ts","path":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/storageKeys.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102154,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102155,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102155,"metadata":{"connectionId":1,"message":{"seq":923,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js","sourceReference":579651132}}}},"level":0} {"tag":"dap.send","timestamp":1588425102155,"metadata":{"connectionId":1,"message":{"seq":924,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js","sourceReference":1893300137}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102155,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102155,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/backup/common/backupFileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backupFileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backupFileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backupFileService.ts","sourceMapSources":["vs/workbench/services/backup/common/backupFileService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102155,"metadata":{"connectionId":1,"message":{"seq":925,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js","sourceReference":689761599}}}},"level":0} {"tag":"dap.send","timestamp":1588425102155,"metadata":{"connectionId":1,"message":{"seq":926,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js","sourceReference":1706308596}}}},"level":0} {"tag":"dap.send","timestamp":1588425102156,"metadata":{"connectionId":1,"message":{"seq":927,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backupFileService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backupFileService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102156,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102156,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102156,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/userDataSync/common/userDataSyncIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/userDataSyncIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc.ts","sourceMapSources":["vs/platform/userDataSync/common/userDataSyncIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102157,"metadata":{"connectionId":1,"message":{"seq":928,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102157,"metadata":{"connectionId":1,"message":{"seq":929,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js","path":"/Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js","sourceReference":1813647483}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102157,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102157,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102157,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/backup/common/backup.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/common/backup.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backup.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backup.ts","sourceMapSources":["vs/workbench/services/backup/common/backup.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102158,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102158,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/common/tunnelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/tunnelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/tunnelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/common/tunnelService.ts","sourceMapSources":["vs/workbench/services/remote/common/tunnelService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102158,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js"},"level":0} {"tag":"dap.send","timestamp":1588425102158,"metadata":{"connectionId":1,"message":{"seq":930,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backup.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/common/backup.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102158,"metadata":{"connectionId":1,"message":{"seq":931,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/tunnelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/tunnelService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102158,"metadata":{"connectionId":1,"message":{"seq":932,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js","sourceReference":2053504585}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102159,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102159,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/remote/common/tunnel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/remote/common/tunnel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/remote/common/tunnel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/remote/common/tunnel.ts","sourceMapSources":["vs/platform/remote/common/tunnel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102159,"metadata":{"connectionId":1,"message":{"seq":933,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js","sourceReference":1792305707}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102160,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errorMessage.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/errorMessage.js"},"level":0} {"tag":"dap.send","timestamp":1588425102161,"metadata":{"connectionId":1,"message":{"seq":934,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/remote/common/tunnel.ts","path":"/Users/roblou/code/vscode/src/vs/platform/remote/common/tunnel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102161,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102161,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102161,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102161,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workspaces/common/workspaceEditing.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/common/workspaceEditing.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/common/workspaceEditing.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workspaces/common/workspaceEditing.ts","sourceMapSources":["vs/workbench/services/workspaces/common/workspaceEditing.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102162,"metadata":{"connectionId":1,"message":{"seq":935,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/common/workspaceEditing.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/common/workspaceEditing.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102162,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102162,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/backup/electron-browser/backup.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/backup/electron-browser/backup.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/electron-browser/backup.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/backup/electron-browser/backup.ts","sourceMapSources":["vs/workbench/services/backup/electron-browser/backup.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102162,"metadata":{"connectionId":1,"message":{"seq":936,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/errorMessage.js","path":"/Users/roblou/code/vscode/out/vs/base/common/errorMessage.js","sourceReference":1952220222}}}},"level":0} {"tag":"dap.send","timestamp":1588425102162,"metadata":{"connectionId":1,"message":{"seq":937,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js","path":"/Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js","sourceReference":837710135}}}},"level":0} {"tag":"dap.send","timestamp":1588425102162,"metadata":{"connectionId":1,"message":{"seq":938,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js","sourceReference":2122643285}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102164,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js"},"level":0} {"tag":"dap.send","timestamp":1588425102164,"metadata":{"connectionId":1,"message":{"seq":939,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/electron-browser/backup.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/backup/electron-browser/backup.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102164,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102165,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/update/common/update.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102165,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102165,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/errorMessage.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errorMessage.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/errorMessage.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/errorMessage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/errorMessage.ts","sourceMapSources":["vs/base/common/errorMessage.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102165,"metadata":{"connectionId":1,"message":{"seq":940,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js","path":"/Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js","sourceReference":988551359}}}},"level":0} {"tag":"dap.send","timestamp":1588425102165,"metadata":{"connectionId":1,"message":{"seq":941,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","sourceReference":1658148759}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102166,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js"},"level":0} {"tag":"dap.send","timestamp":1588425102166,"metadata":{"connectionId":1,"message":{"seq":942,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/errorMessage.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/errorMessage.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102166,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102166,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/authentication/common/authentication.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/authentication/common/authentication.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/authentication/common/authentication.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/authentication/common/authentication.ts","sourceMapSources":["vs/platform/authentication/common/authentication.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102166,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102166,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts","sourceMapSources":["vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102167,"metadata":{"connectionId":1,"message":{"seq":943,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.js","path":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.js","sourceReference":1325583307}}}},"level":0} {"tag":"dap.send","timestamp":1588425102167,"metadata":{"connectionId":1,"message":{"seq":944,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js","path":"/Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js","sourceReference":747945743}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102167,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102167,"metadata":{"connectionId":1,"message":{"seq":945,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/authentication/common/authentication.ts","path":"/Users/roblou/code/vscode/src/vs/platform/authentication/common/authentication.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102167,"metadata":{"connectionId":1,"message":{"seq":946,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102167,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102168,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102168,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/menubar/node/menubar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/menubar/node/menubar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/menubar/node/menubar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/menubar/node/menubar.ts","sourceMapSources":["vs/platform/menubar/node/menubar.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102168,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102168,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/node/ipc.net.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.net.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.net.ts","sourceMapSources":["vs/base/parts/ipc/node/ipc.net.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102168,"metadata":{"connectionId":1,"message":{"seq":947,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/menubar/node/menubar.ts","path":"/Users/roblou/code/vscode/src/vs/platform/menubar/node/menubar.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102169,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102169,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/update/common/update.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/update/common/update.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/update/common/update.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/update/common/update.ts","sourceMapSources":["vs/platform/update/common/update.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102169,"metadata":{"connectionId":1,"message":{"seq":948,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js","path":"/Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js","sourceReference":1737912911}}}},"level":0} {"tag":"dap.send","timestamp":1588425102169,"metadata":{"connectionId":1,"message":{"seq":949,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js","path":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js","sourceReference":1938635504}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102169,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js"},"level":0} {"tag":"dap.send","timestamp":1588425102169,"metadata":{"connectionId":1,"message":{"seq":950,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.net.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.net.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102169,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102169,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/localizations/common/localizations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/localizations/common/localizations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/localizations/common/localizations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/localizations/common/localizations.ts","sourceMapSources":["vs/platform/localizations/common/localizations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102169,"metadata":{"connectionId":1,"message":{"seq":951,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/update/common/update.ts","path":"/Users/roblou/code/vscode/src/vs/platform/update/common/update.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102170,"metadata":{"connectionId":1,"message":{"seq":952,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/localizations/common/localizations.ts","path":"/Users/roblou/code/vscode/src/vs/platform/localizations/common/localizations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102170,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102170,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/request/browser/requestService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/request/browser/requestService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/request/browser/requestService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/request/browser/requestService.ts","sourceMapSources":["vs/platform/request/browser/requestService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102170,"metadata":{"connectionId":1,"message":{"seq":953,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js","path":"/Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js","sourceReference":2063108825}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102170,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102171,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102171,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/lifecycle/common/lifecycleService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/lifecycle/common/lifecycleService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycleService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycleService.ts","sourceMapSources":["vs/platform/lifecycle/common/lifecycleService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102171,"metadata":{"connectionId":1,"message":{"seq":954,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/request/browser/requestService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/request/browser/requestService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102171,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102172,"metadata":{"connectionId":1,"message":{"seq":955,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycleService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/lifecycle/common/lifecycleService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102172,"metadata":{"connectionId":1,"message":{"seq":956,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js","sourceReference":1552225412}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102172,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102172,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102172,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/issue/node/issue.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/issue/node/issue.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/issue/node/issue.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/issue/node/issue.ts","sourceMapSources":["vs/platform/issue/node/issue.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102172,"metadata":{"connectionId":1,"message":{"seq":957,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/issue/node/issue.ts","path":"/Users/roblou/code/vscode/src/vs/platform/issue/node/issue.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102173,"metadata":{"connectionId":1,"message":{"seq":958,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js","sourceReference":581138643}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102173,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102173,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102173,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/localizations/browser/localizationsActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/localizationsActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizationsActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizationsActions.ts","sourceMapSources":["vs/workbench/contrib/localizations/browser/localizationsActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102173,"metadata":{"connectionId":1,"message":{"seq":959,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizationsActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/localizationsActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102174,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js"},"level":0} {"tag":"dap.send","timestamp":1588425102174,"metadata":{"connectionId":1,"message":{"seq":960,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js","sourceReference":1295148880}}}},"level":0} {"tag":"dap.send","timestamp":1588425102174,"metadata":{"connectionId":1,"message":{"seq":961,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js","sourceReference":384109650}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102174,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102174,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/common/extensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensions.ts","sourceMapSources":["vs/workbench/contrib/extensions/common/extensions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102174,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102174,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionsRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionsRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102179,"metadata":{"connectionId":1,"message":{"seq":962,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102179,"metadata":{"connectionId":1,"message":{"seq":963,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102179,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102179,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js"},"level":0} {"tag":"dap.send","timestamp":1588425102180,"metadata":{"connectionId":1,"message":{"seq":964,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js","path":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js","sourceReference":1419014022}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102180,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102180,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/viewlet/browser/viewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/viewlet/browser/viewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/viewlet/browser/viewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/viewlet/browser/viewlet.ts","sourceMapSources":["vs/workbench/services/viewlet/browser/viewlet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102181,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js"},"level":0} {"tag":"dap.send","timestamp":1588425102181,"metadata":{"connectionId":1,"message":{"seq":965,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/viewlet/browser/viewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/viewlet/browser/viewlet.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102181,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102181,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/cancellation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","sourceMapSources":["vs/base/common/cancellation.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102184,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102184,"metadata":{"connectionId":1,"message":{"seq":966,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102184,"metadata":{"connectionId":1,"message":{"seq":967,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js","sourceReference":652039345}}}},"level":0} {"tag":"dap.send","timestamp":1588425102184,"metadata":{"connectionId":1,"message":{"seq":968,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","path":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","sourceReference":1281850725}}}},"level":0} {"tag":"dap.send","timestamp":1588425102184,"metadata":{"connectionId":1,"message":{"seq":969,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js","sourceReference":1607227770}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102185,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102185,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102185,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/localizations/browser/minimalTranslations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/localizations/browser/minimalTranslations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/minimalTranslations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/minimalTranslations.ts","sourceMapSources":["vs/workbench/contrib/localizations/browser/minimalTranslations.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102185,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102185,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/keyCodes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","sourceMapSources":["vs/base/common/keyCodes.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102186,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js"},"level":0} {"tag":"dap.send","timestamp":1588425102186,"metadata":{"connectionId":1,"message":{"seq":970,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/minimalTranslations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/localizations/browser/minimalTranslations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102186,"metadata":{"connectionId":1,"message":{"seq":971,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102187,"metadata":{"connectionId":1,"message":{"seq":972,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js","sourceReference":1407468938}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102189,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102189,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102189,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tags/common/workspaceTags.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/common/workspaceTags.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/common/workspaceTags.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tags/common/workspaceTags.ts","sourceMapSources":["vs/workbench/contrib/tags/common/workspaceTags.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102189,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js"},"level":0} {"tag":"dap.send","timestamp":1588425102190,"metadata":{"connectionId":1,"message":{"seq":973,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js","sourceReference":1990909336}}}},"level":0} {"tag":"dap.send","timestamp":1588425102190,"metadata":{"connectionId":1,"message":{"seq":974,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js","sourceReference":160291263}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102190,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js"},"level":0} {"tag":"dap.send","timestamp":1588425102190,"metadata":{"connectionId":1,"message":{"seq":975,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/common/workspaceTags.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/common/workspaceTags.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102190,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102190,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/logs/electron-browser/logsActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/electron-browser/logsActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions.ts","sourceMapSources":["vs/workbench/contrib/logs/electron-browser/logsActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102191,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/resources.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/resources.js"},"level":0} {"tag":"dap.send","timestamp":1588425102191,"metadata":{"connectionId":1,"message":{"seq":976,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js","sourceReference":1608181621}}}},"level":0} {"tag":"dap.send","timestamp":1588425102191,"metadata":{"connectionId":1,"message":{"seq":977,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js","sourceReference":1445950417}}}},"level":0} {"tag":"dap.send","timestamp":1588425102191,"metadata":{"connectionId":1,"message":{"seq":978,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js","path":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js","sourceReference":1299834819}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102191,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102191,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/editorContextKeys.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/editorContextKeys.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/editorContextKeys.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/editorContextKeys.ts","sourceMapSources":["vs/editor/common/editorContextKeys.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102191,"metadata":{"connectionId":1,"message":{"seq":979,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102192,"metadata":{"connectionId":1,"message":{"seq":980,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/editorContextKeys.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/editorContextKeys.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102192,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102192,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tags/electron-browser/workspaceTags.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tags/electron-browser/workspaceTags.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts","sourceMapSources":["vs/workbench/contrib/tags/electron-browser/workspaceTags.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102192,"metadata":{"connectionId":1,"message":{"seq":981,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/resources.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/resources.js","sourceReference":1365151795}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102193,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/editor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/editor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102193,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102193,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/electron-browser/fileCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/fileCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileCommands.ts","sourceMapSources":["vs/workbench/contrib/files/electron-browser/fileCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102193,"metadata":{"connectionId":1,"message":{"seq":982,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102193,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102193,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/files.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/files.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.ts","sourceMapSources":["vs/workbench/contrib/files/browser/files.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102194,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102194,"metadata":{"connectionId":1,"message":{"seq":983,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/fileCommands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102194,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102194,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/instantiation/common/descriptors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/descriptors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/descriptors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/instantiation/common/descriptors.ts","sourceMapSources":["vs/platform/instantiation/common/descriptors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102194,"metadata":{"connectionId":1,"message":{"seq":984,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/files.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102194,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102194,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/resources.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/resources.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/resources.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/resources.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/resources.ts","sourceMapSources":["vs/workbench/common/resources.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102195,"metadata":{"connectionId":1,"message":{"seq":985,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/editor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/editor.js","sourceReference":762877706}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102196,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102196,"metadata":{"connectionId":1,"message":{"seq":986,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/descriptors.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/descriptors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102196,"metadata":{"connectionId":1,"message":{"seq":987,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/resources.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/resources.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102196,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js"},"level":0} {"tag":"dap.send","timestamp":1588425102197,"metadata":{"connectionId":1,"message":{"seq":988,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js","sourceReference":1446261833}}}},"level":0} {"tag":"dap.send","timestamp":1588425102198,"metadata":{"connectionId":1,"message":{"seq":989,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js","sourceReference":1746304153}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102198,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/color.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/color.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102198,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102198,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/editor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/editor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/editor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/editor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/editor.ts","sourceMapSources":["vs/workbench/browser/editor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102199,"metadata":{"connectionId":1,"message":{"seq":990,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/editor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/editor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102199,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102199,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/editors/fileEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/editors/fileEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts","sourceMapSources":["vs/workbench/contrib/files/common/editors/fileEditorInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102199,"metadata":{"connectionId":1,"message":{"seq":991,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js","sourceReference":1467683980}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102199,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102199,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/electron-browser/textFileEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/electron-browser/textFileEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/textFileEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/textFileEditor.ts","sourceMapSources":["vs/workbench/contrib/files/electron-browser/textFileEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102200,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425102200,"metadata":{"connectionId":1,"message":{"seq":992,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102200,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102200,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/files.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/files.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/files.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/files.ts","sourceMapSources":["vs/workbench/contrib/files/common/files.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102200,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102201,"metadata":{"connectionId":1,"message":{"seq":993,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/textFileEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/electron-browser/textFileEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102201,"metadata":{"connectionId":1,"message":{"seq":994,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/files.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/files.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102201,"metadata":{"connectionId":1,"message":{"seq":995,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/color.js","path":"/Users/roblou/code/vscode/out/vs/base/common/color.js","sourceReference":932181665}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102201,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/theme.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/theme.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102202,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102202,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/color.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/color.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/color.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/color.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/color.ts","sourceMapSources":["vs/base/common/color.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102202,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/types.js"},"level":0} {"tag":"dap.send","timestamp":1588425102202,"metadata":{"connectionId":1,"message":{"seq":996,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/color.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/color.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102203,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102203,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102203,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/theme/common/colorRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/theme/common/colorRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/theme/common/colorRegistry.ts","sourceMapSources":["vs/platform/theme/common/colorRegistry.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102203,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102203,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102204,"metadata":{"connectionId":1,"message":{"seq":997,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/theme/common/colorRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/theme/common/colorRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102204,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102204,"metadata":{"connectionId":1,"message":{"seq":998,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102205,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102205,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/theme.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/theme.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/theme.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/theme.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/theme.ts","sourceMapSources":["vs/workbench/common/theme.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102205,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102205,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/types.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/types.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/types.ts","sourceMapSources":["vs/base/common/types.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102205,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js"},"level":0} {"tag":"dap.send","timestamp":1588425102205,"metadata":{"connectionId":1,"message":{"seq":999,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/theme.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/theme.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102206,"metadata":{"connectionId":1,"message":{"seq":1000,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102206,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102206,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102206,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debug.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debug.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debug.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debug.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102207,"metadata":{"connectionId":1,"message":{"seq":1001,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debug.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debug.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102207,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js"},"level":0} {"tag":"dap.send","timestamp":1588425102207,"metadata":{"connectionId":1,"message":{"seq":1002,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js","path":"/Users/roblou/code/vscode/out/vs/platform/theme/common/colorRegistry.js","sourceReference":201424169}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102208,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102208,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/editor/common/editorGroupsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorGroupsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorGroupsService.ts","sourceMapSources":["vs/workbench/services/editor/common/editorGroupsService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102208,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js"},"level":0} {"tag":"dap.send","timestamp":1588425102210,"metadata":{"connectionId":1,"message":{"seq":1003,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorGroupsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorGroupsService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102210,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102210,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/backup/electron-browser/backupTracker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backupTracker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backupTracker.ts","sourceMapSources":["vs/workbench/contrib/backup/electron-browser/backupTracker.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102210,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102211,"metadata":{"connectionId":1,"message":{"seq":1004,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/theme.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/theme.js","sourceReference":553898912}}}},"level":0} {"tag":"dap.send","timestamp":1588425102211,"metadata":{"connectionId":1,"message":{"seq":1005,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/types.js","path":"/Users/roblou/code/vscode/out/vs/base/common/types.js","sourceReference":1425678132}}}},"level":0} {"tag":"dap.send","timestamp":1588425102211,"metadata":{"connectionId":1,"message":{"seq":1006,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.js","sourceReference":1019559895}}}},"level":0} {"tag":"dap.send","timestamp":1588425102212,"metadata":{"connectionId":1,"message":{"seq":1007,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backupTracker.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/electron-browser/backupTracker.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102212,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102212,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.ts","sourceMapSources":["vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102212,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102213,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102213,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102213,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminal.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminal.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102214,"metadata":{"connectionId":1,"message":{"seq":1008,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102214,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102214,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/node/terminal.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminal.ts","sourceMapSources":["vs/workbench/contrib/terminal/node/terminal.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102214,"metadata":{"connectionId":1,"message":{"seq":1009,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debug.js","sourceReference":264931391}}}},"level":0} {"tag":"dap.send","timestamp":1588425102214,"metadata":{"connectionId":1,"message":{"seq":1010,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorGroupsService.js","sourceReference":2090192607}}}},"level":0} {"tag":"dap.send","timestamp":1588425102215,"metadata":{"connectionId":1,"message":{"seq":1011,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/electron-browser/backupTracker.js","sourceReference":1754629528}}}},"level":0} {"tag":"dap.send","timestamp":1588425102215,"metadata":{"connectionId":1,"message":{"seq":1012,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService.js","sourceReference":1498292052}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102215,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102215,"metadata":{"connectionId":1,"message":{"seq":1013,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminal.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102215,"metadata":{"connectionId":1,"message":{"seq":1014,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminal.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminal.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102218,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102218,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/electron-browser/terminalNativeService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.ts","sourceMapSources":["vs/workbench/contrib/terminal/electron-browser/terminalNativeService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102219,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425102219,"metadata":{"connectionId":1,"message":{"seq":1015,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminal.js","sourceReference":1099887258}}}},"level":0} {"tag":"dap.send","timestamp":1588425102219,"metadata":{"connectionId":1,"message":{"seq":1016,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.js","sourceReference":775953765}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102219,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102220,"metadata":{"connectionId":1,"message":{"seq":1017,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalNativeService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102220,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102220,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/terminal.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminal.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/terminal.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102220,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js"},"level":0} {"tag":"dap.send","timestamp":1588425102220,"metadata":{"connectionId":1,"message":{"seq":1018,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminal.js","sourceReference":1489313184}}}},"level":0} {"tag":"dap.send","timestamp":1588425102220,"metadata":{"connectionId":1,"message":{"seq":1019,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminal.js","sourceReference":342652860}}}},"level":0} {"tag":"dap.send","timestamp":1588425102221,"metadata":{"connectionId":1,"message":{"seq":1020,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminal.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminal.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102221,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102221,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/terminalConfiguration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/terminalConfiguration.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102221,"metadata":{"connectionId":1,"message":{"seq":1021,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalConfiguration.js","sourceReference":1785625313}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102221,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102222,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102222,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebookEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebookEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102222,"metadata":{"connectionId":1,"message":{"seq":1022,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102222,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js"},"level":0} {"tag":"dap.send","timestamp":1588425102223,"metadata":{"connectionId":1,"message":{"seq":1023,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102223,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102223,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/electron-browser/webviewCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts","sourceMapSources":["vs/workbench/contrib/webview/electron-browser/webviewCommands.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102223,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102223,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102223,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102224,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102224,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/electron-browser/webviewElement.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts","sourceMapSources":["vs/workbench/contrib/webview/electron-browser/webviewElement.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102224,"metadata":{"connectionId":1,"message":{"seq":1024,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102224,"metadata":{"connectionId":1,"message":{"seq":1025,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102224,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js"},"level":0} {"tag":"dap.send","timestamp":1588425102224,"metadata":{"connectionId":1,"message":{"seq":1026,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","sourceReference":1785281662}}}},"level":0} {"tag":"dap.send","timestamp":1588425102225,"metadata":{"connectionId":1,"message":{"seq":1027,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102225,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102225,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102225,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/download/common/downloadIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/download/common/downloadIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/download/common/downloadIpc.ts","sourceMapSources":["vs/platform/download/common/downloadIpc.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102225,"metadata":{"connectionId":1,"message":{"seq":1028,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewCommands.js","sourceReference":303910695}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102226,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102226,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/contextkeys.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/contextkeys.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/contextkeys.ts","sourceMapSources":["vs/workbench/browser/contextkeys.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102226,"metadata":{"connectionId":1,"message":{"seq":1029,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/download/common/downloadIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/download/common/downloadIpc.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102226,"metadata":{"connectionId":1,"message":{"seq":1030,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewElement.js","sourceReference":2061049741}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102227,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/objects.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/objects.js"},"level":0} {"tag":"dap.send","timestamp":1588425102227,"metadata":{"connectionId":1,"message":{"seq":1031,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/contextkeys.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/contextkeys.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102227,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102227,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102227,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/processes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/processes.js"},"level":0} {"tag":"dap.send","timestamp":1588425102228,"metadata":{"connectionId":1,"message":{"seq":1032,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102228,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102228,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/dialogs/browser/simpleFileDialog.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts","sourceMapSources":["vs/workbench/services/dialogs/browser/simpleFileDialog.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102228,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425102228,"metadata":{"connectionId":1,"message":{"seq":1033,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","sourceReference":570738469}}}},"level":0} {"tag":"dap.send","timestamp":1588425102229,"metadata":{"connectionId":1,"message":{"seq":1034,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102229,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102229,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102229,"metadata":{"connectionId":1,"message":{"seq":1035,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/download/common/downloadIpc.js","sourceReference":1574451670}}}},"level":0} {"tag":"dap.send","timestamp":1588425102229,"metadata":{"connectionId":1,"message":{"seq":1036,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/sleepResumeRepaintMinimap.js","sourceReference":1630229384}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102230,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js"},"level":0} {"tag":"dap.send","timestamp":1588425102230,"metadata":{"connectionId":1,"message":{"seq":1037,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102230,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102230,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/objects.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/objects.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/objects.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/objects.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/objects.ts","sourceMapSources":["vs/base/common/objects.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102230,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js"},"level":0} {"tag":"dap.send","timestamp":1588425102231,"metadata":{"connectionId":1,"message":{"seq":1038,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/objects.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/objects.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102231,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102231,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/processes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/processes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/processes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/processes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/processes.ts","sourceMapSources":["vs/base/node/processes.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102231,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js"},"level":0} {"tag":"dap.send","timestamp":1588425102231,"metadata":{"connectionId":1,"message":{"seq":1039,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/dialogs/browser/simpleFileDialog.js","sourceReference":2118779924}}}},"level":0} {"tag":"dap.send","timestamp":1588425102232,"metadata":{"connectionId":1,"message":{"seq":1040,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/contextkeys.js","sourceReference":2041009999}}}},"level":0} {"tag":"dap.send","timestamp":1588425102232,"metadata":{"connectionId":1,"message":{"seq":1041,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/processes.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/processes.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102232,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102232,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/debug/common/extensionHostDebugIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.ts","sourceMapSources":["vs/platform/debug/common/extensionHostDebugIpc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102232,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js"},"level":0} {"tag":"dap.send","timestamp":1588425102232,"metadata":{"connectionId":1,"message":{"seq":1042,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102233,"metadata":{"connectionId":1,"message":{"seq":1043,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/inputClipboardActions.js","sourceReference":460986359}}}},"level":0} {"tag":"dap.send","timestamp":1588425102233,"metadata":{"connectionId":1,"message":{"seq":1044,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/objects.js","path":"/Users/roblou/code/vscode/out/vs/base/common/objects.js","sourceReference":468676225}}}},"level":0} {"tag":"dap.send","timestamp":1588425102233,"metadata":{"connectionId":1,"message":{"seq":1045,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/processes.js","path":"/Users/roblou/code/vscode/out/vs/base/node/processes.js","sourceReference":1284819500}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102233,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102233,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102233,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102234,"metadata":{"connectionId":1,"message":{"seq":1046,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102234,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102234,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102235,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102235,"metadata":{"connectionId":1,"message":{"seq":1047,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebugIpc.js","sourceReference":284463453}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102235,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102235,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102235,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/debug/common/extensionHostDebug.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebug.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebug.ts","sourceMapSources":["vs/platform/debug/common/extensionHostDebug.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102236,"metadata":{"connectionId":1,"message":{"seq":1048,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102236,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102236,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webview.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102236,"metadata":{"connectionId":1,"message":{"seq":1049,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebug.ts","path":"/Users/roblou/code/vscode/src/vs/platform/debug/common/extensionHostDebug.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102236,"metadata":{"connectionId":1,"message":{"seq":1050,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.js","sourceReference":1912515828}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102236,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102237,"metadata":{"connectionId":1,"message":{"seq":1051,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webview.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102237,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102237,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/externalTerminal/common/externalTerminal.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/common/externalTerminal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/common/externalTerminal.ts","sourceMapSources":["vs/workbench/contrib/externalTerminal/common/externalTerminal.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102237,"metadata":{"connectionId":1,"message":{"seq":1052,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.js","sourceReference":2130517638}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102237,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102238,"metadata":{"connectionId":1,"message":{"seq":1053,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/common/externalTerminal.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/externalTerminal/common/externalTerminal.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102238,"metadata":{"connectionId":1,"message":{"seq":1054,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js","path":"/Users/roblou/code/vscode/out/vs/platform/debug/common/extensionHostDebug.js","sourceReference":1286062116}}}},"level":0} {"tag":"dap.send","timestamp":1588425102238,"metadata":{"connectionId":1,"message":{"seq":1055,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webview.js","sourceReference":15244340}}}},"level":0} {"tag":"dap.send","timestamp":1588425102238,"metadata":{"connectionId":1,"message":{"seq":1056,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/externalTerminal/common/externalTerminal.js","sourceReference":1713145438}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102239,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102239,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditor.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewEditor.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102239,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102239,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/electron-browser/webviewService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts","sourceMapSources":["vs/workbench/contrib/webview/electron-browser/webviewService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102239,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102240,"metadata":{"connectionId":1,"message":{"seq":1057,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditor.js","sourceReference":1413720301}}}},"level":0} {"tag":"dap.send","timestamp":1588425102240,"metadata":{"connectionId":1,"message":{"seq":1058,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewService.js","sourceReference":9131411}}}},"level":0} {"tag":"dap.send","timestamp":1588425102240,"metadata":{"connectionId":1,"message":{"seq":1059,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102240,"metadata":{"connectionId":1,"message":{"seq":1060,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102240,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102240,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/performance/electron-browser/perfviewEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor.ts","sourceMapSources":["vs/workbench/contrib/performance/electron-browser/perfviewEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102241,"metadata":{"connectionId":1,"message":{"seq":1061,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/perfviewEditor.js","sourceReference":1293786624}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102241,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js"},"level":0} {"tag":"dap.send","timestamp":1588425102241,"metadata":{"connectionId":1,"message":{"seq":1062,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102241,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102242,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/extpath.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/extpath.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102243,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102243,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102243,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102243,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102244,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102244,"metadata":{"connectionId":1,"message":{"seq":1063,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102244,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102244,"metadata":{"connectionId":1,"message":{"seq":1064,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102245,"metadata":{"connectionId":1,"message":{"seq":1065,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.js","sourceReference":211742753}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102246,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102246,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/performance/electron-browser/startupTimings.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts","sourceMapSources":["vs/workbench/contrib/performance/electron-browser/startupTimings.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102246,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102246,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/performance/electron-browser/startupProfiler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupProfiler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupProfiler.ts","sourceMapSources":["vs/workbench/contrib/performance/electron-browser/startupProfiler.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102247,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js"},"level":0} {"tag":"dap.send","timestamp":1588425102247,"metadata":{"connectionId":1,"message":{"seq":1066,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102247,"metadata":{"connectionId":1,"message":{"seq":1067,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupProfiler.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupProfiler.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102247,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102247,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/extpath.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/extpath.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/extpath.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/extpath.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/extpath.ts","sourceMapSources":["vs/base/node/extpath.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102248,"metadata":{"connectionId":1,"message":{"seq":1068,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.js","sourceReference":1135407722}}}},"level":0} {"tag":"dap.send","timestamp":1588425102248,"metadata":{"connectionId":1,"message":{"seq":1069,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupTimings.js","sourceReference":1547621433}}}},"level":0} {"tag":"dap.send","timestamp":1588425102248,"metadata":{"connectionId":1,"message":{"seq":1070,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/performance/electron-browser/startupProfiler.js","sourceReference":1229023357}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102248,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102248,"metadata":{"connectionId":1,"message":{"seq":1071,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/extpath.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/extpath.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102249,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102249,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102249,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102249,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102249,"metadata":{"connectionId":1,"message":{"seq":1072,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/extpath.js","path":"/Users/roblou/code/vscode/out/vs/base/node/extpath.js","sourceReference":327763562}}}},"level":0} {"tag":"dap.send","timestamp":1588425102249,"metadata":{"connectionId":1,"message":{"seq":1073,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.js","sourceReference":191661231}}}},"level":0} {"tag":"dap.send","timestamp":1588425102249,"metadata":{"connectionId":1,"message":{"seq":1074,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsActions.js","sourceReference":555492225}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102249,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js"},"level":0} {"tag":"dap.send","timestamp":1588425102250,"metadata":{"connectionId":1,"message":{"seq":1075,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102250,"metadata":{"connectionId":1,"message":{"seq":1076,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102250,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102250,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102250,"metadata":{"connectionId":1,"message":{"seq":1077,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.js","sourceReference":184160306}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102251,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102251,"metadata":{"connectionId":1,"message":{"seq":1078,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102251,"metadata":{"connectionId":1,"message":{"seq":1079,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js","sourceReference":608331173}}}},"level":0} {"tag":"dap.send","timestamp":1588425102251,"metadata":{"connectionId":1,"message":{"seq":1080,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js","sourceReference":1620291370}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102251,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102252,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102252,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/issue/electron-browser/issueActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions.ts","sourceMapSources":["vs/workbench/contrib/issue/electron-browser/issueActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102252,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes.js"},"level":0} {"tag":"dap.send","timestamp":1588425102253,"metadata":{"connectionId":1,"message":{"seq":1081,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102253,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js"},"level":0} {"tag":"dap.send","timestamp":1588425102253,"metadata":{"connectionId":1,"message":{"seq":1082,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js","sourceReference":811136103}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102264,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102264,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/issue/electron-browser/issue.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issue.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.ts","sourceMapSources":["vs/workbench/contrib/issue/electron-browser/issue.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102264,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js"},"level":0} {"tag":"dap.send","timestamp":1588425102264,"metadata":{"connectionId":1,"message":{"seq":1083,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js","sourceReference":1730666906}}}},"level":0} {"tag":"dap.send","timestamp":1588425102264,"metadata":{"connectionId":1,"message":{"seq":1084,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes.js","sourceReference":1249005422}}}},"level":0} {"tag":"dap.send","timestamp":1588425102264,"metadata":{"connectionId":1,"message":{"seq":1085,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js","sourceReference":895342525}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102265,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js"},"level":0} {"tag":"dap.send","timestamp":1588425102265,"metadata":{"connectionId":1,"message":{"seq":1086,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102265,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102265,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/issue/electron-browser/issueService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/electron-browser/issueService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService.ts","sourceMapSources":["vs/workbench/contrib/issue/electron-browser/issueService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102265,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102265,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/common/TMHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMHelper.ts","sourceMapSources":["vs/workbench/services/textMate/common/TMHelper.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102266,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/lib/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/index.js"},"level":0} {"tag":"dap.send","timestamp":1588425102266,"metadata":{"connectionId":1,"message":{"seq":1087,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102266,"metadata":{"connectionId":1,"message":{"seq":1088,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMHelper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMHelper.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102266,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102266,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes.ts","sourceMapSources":["vs/editor/common/modes.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102267,"metadata":{"connectionId":1,"message":{"seq":1089,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js","sourceReference":321440906}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102267,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/safer-buffer/safer.js","absolutePath":"/Users/roblou/code/vscode/node_modules/safer-buffer/safer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102267,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102267,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/issue/common/commands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/issue/common/commands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/common/commands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/issue/common/commands.ts","sourceMapSources":["vs/workbench/contrib/issue/common/commands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102267,"metadata":{"connectionId":1,"message":{"seq":1090,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102267,"metadata":{"connectionId":1,"message":{"seq":1091,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/common/commands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/issue/common/commands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102268,"metadata":{"connectionId":1,"message":{"seq":1092,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js","sourceReference":1449610516}}}},"level":0} {"tag":"dap.send","timestamp":1588425102268,"metadata":{"connectionId":1,"message":{"seq":1093,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/index.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/index.js","sourceReference":1986454440}}}},"level":0} {"tag":"dap.send","timestamp":1588425102268,"metadata":{"connectionId":1,"message":{"seq":1094,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/safer-buffer/safer.js","path":"/Users/roblou/code/vscode/node_modules/safer-buffer/safer.js","sourceReference":102503366}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102268,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/lib/bom-handling.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/bom-handling.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102268,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102268,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.ts","sourceMapSources":["vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102268,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102268,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.ts","sourceMapSources":["vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102269,"metadata":{"connectionId":1,"message":{"seq":1095,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102269,"metadata":{"connectionId":1,"message":{"seq":1096,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102269,"metadata":{"connectionId":1,"message":{"seq":1097,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/bom-handling.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/bom-handling.js","sourceReference":1988180761}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102269,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/lib/streams.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/streams.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102270,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/lib/extend-node.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/extend-node.js"},"level":0} {"tag":"dap.send","timestamp":1588425102270,"metadata":{"connectionId":1,"message":{"seq":1098,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/streams.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/streams.js","sourceReference":684403762}}}},"level":0} {"tag":"dap.send","timestamp":1588425102271,"metadata":{"connectionId":1,"message":{"seq":1099,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/extend-node.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/lib/extend-node.js","sourceReference":1259649638}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102277,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102278,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102278,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/tasks.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/tasks.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/tasks.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/tasks.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102278,"metadata":{"connectionId":1,"message":{"seq":1100,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/tasks.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/tasks.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102278,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102279,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js"},"level":0} {"tag":"dap.send","timestamp":1588425102280,"metadata":{"connectionId":1,"message":{"seq":1101,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/tasks.js","sourceReference":592245353}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102280,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102280,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/node/processRunnerDetector.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts","sourceMapSources":["vs/workbench/contrib/tasks/node/processRunnerDetector.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102280,"metadata":{"connectionId":1,"message":{"seq":1102,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processRunnerDetector.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102280,"metadata":{"connectionId":1,"message":{"seq":1103,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processRunnerDetector.js","sourceReference":510559760}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102280,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102281,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102281,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/node/processTaskSystem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processTaskSystem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processTaskSystem.ts","sourceMapSources":["vs/workbench/contrib/tasks/node/processTaskSystem.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102281,"metadata":{"connectionId":1,"message":{"seq":1104,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processTaskSystem.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/node/processTaskSystem.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102282,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102283,"metadata":{"connectionId":1,"message":{"seq":1105,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/node/processTaskSystem.js","sourceReference":1647040622}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102283,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102284,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102284,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/taskConfiguration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/taskConfiguration.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102285,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/event.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/event.js"},"level":0} {"tag":"dap.send","timestamp":1588425102287,"metadata":{"connectionId":1,"message":{"seq":1106,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102287,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js"},"level":0} {"tag":"dap.send","timestamp":1588425102287,"metadata":{"connectionId":1,"message":{"seq":1107,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskConfiguration.js","sourceReference":99311823}}}},"level":0} {"tag":"dap.send","timestamp":1588425102287,"metadata":{"connectionId":1,"message":{"seq":1108,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/event.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/event.js","sourceReference":1424253024}}}},"level":0} {"tag":"dap.send","timestamp":1588425102287,"metadata":{"connectionId":1,"message":{"seq":1109,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js","sourceReference":1829111390}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102288,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/strings.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102288,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102289,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102289,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/taskService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskService.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/taskService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102289,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102289,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/browser/abstractTaskService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts","sourceMapSources":["vs/workbench/contrib/tasks/browser/abstractTaskService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102289,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/canIUse.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/canIUse.js"},"level":0} {"tag":"dap.send","timestamp":1588425102290,"metadata":{"connectionId":1,"message":{"seq":1110,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102290,"metadata":{"connectionId":1,"message":{"seq":1111,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102290,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102290,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/event.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/event.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/event.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/event.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/event.ts","sourceMapSources":["vs/base/browser/event.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102290,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js"},"level":0} {"tag":"dap.send","timestamp":1588425102290,"metadata":{"connectionId":1,"message":{"seq":1112,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/event.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102293,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102293,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/keyboardEvent.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/keyboardEvent.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/keyboardEvent.ts","sourceMapSources":["vs/base/browser/keyboardEvent.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102294,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/part.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/part.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102294,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102294,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/strings.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/strings.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/strings.ts","sourceMapSources":["vs/base/common/strings.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102294,"metadata":{"connectionId":1,"message":{"seq":1113,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/keyboardEvent.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/keyboardEvent.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102294,"metadata":{"connectionId":1,"message":{"seq":1114,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/abstractTaskService.js","sourceReference":695866961}}}},"level":0} {"tag":"dap.send","timestamp":1588425102294,"metadata":{"connectionId":1,"message":{"seq":1115,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/canIUse.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/canIUse.js","sourceReference":1825489585}}}},"level":0} {"tag":"dap.send","timestamp":1588425102294,"metadata":{"connectionId":1,"message":{"seq":1116,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/keyboardEvent.js","sourceReference":682742955}}}},"level":0} {"tag":"dap.send","timestamp":1588425102294,"metadata":{"connectionId":1,"message":{"seq":1117,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102295,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102295,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/mouseEvent.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/mouseEvent.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/mouseEvent.ts","sourceMapSources":["vs/base/browser/mouseEvent.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102295,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js"},"level":0} {"tag":"dap.send","timestamp":1588425102295,"metadata":{"connectionId":1,"message":{"seq":1118,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/mouseEvent.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/mouseEvent.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102296,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102296,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/canIUse.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/canIUse.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/canIUse.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/canIUse.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/canIUse.ts","sourceMapSources":["vs/base/browser/canIUse.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102296,"metadata":{"connectionId":1,"message":{"seq":1119,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/strings.js","path":"/Users/roblou/code/vscode/out/vs/base/common/strings.js","sourceReference":1437110040}}}},"level":0} {"tag":"dap.send","timestamp":1588425102296,"metadata":{"connectionId":1,"message":{"seq":1120,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/mouseEvent.js","sourceReference":617141876}}}},"level":0} {"tag":"dap.send","timestamp":1588425102296,"metadata":{"connectionId":1,"message":{"seq":1121,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js","sourceReference":1215109994}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102296,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/map.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/map.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102297,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102297,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensions/common/extensionValidator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensions/common/extensionValidator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensions/common/extensionValidator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensions/common/extensionValidator.ts","sourceMapSources":["vs/platform/extensions/common/extensionValidator.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102297,"metadata":{"connectionId":1,"message":{"seq":1122,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/canIUse.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/canIUse.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102297,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js"},"level":0} {"tag":"dap.send","timestamp":1588425102298,"metadata":{"connectionId":1,"message":{"seq":1123,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/part.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/part.js","sourceReference":451199959}}}},"level":0} {"tag":"dap.send","timestamp":1588425102298,"metadata":{"connectionId":1,"message":{"seq":1124,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensions/common/extensionValidator.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensions/common/extensionValidator.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102298,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102298,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/part.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/part.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/part.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/part.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/part.ts","sourceMapSources":["vs/workbench/browser/part.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102298,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js"},"level":0} {"tag":"dap.send","timestamp":1588425102299,"metadata":{"connectionId":1,"message":{"seq":1125,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/part.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/part.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102299,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js"},"level":0} {"tag":"dap.send","timestamp":1588425102299,"metadata":{"connectionId":1,"message":{"seq":1126,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/map.js","path":"/Users/roblou/code/vscode/out/vs/base/common/map.js","sourceReference":1051007504}}}},"level":0} {"tag":"dap.send","timestamp":1588425102299,"metadata":{"connectionId":1,"message":{"seq":1127,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js","sourceReference":620099010}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102300,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102300,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/extensionManagementUtil.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/extensionManagementUtil.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts","sourceMapSources":["vs/platform/extensionManagement/common/extensionManagementUtil.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102300,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/codicon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/codicon.js"},"level":0} {"tag":"dap.send","timestamp":1588425102300,"metadata":{"connectionId":1,"message":{"seq":1128,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102300,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102301,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/map.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/map.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/map.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/map.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/map.ts","sourceMapSources":["vs/base/common/map.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102301,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102301,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102301,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/serviceMachineId/common/serviceMachineId.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/serviceMachineId/common/serviceMachineId.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/serviceMachineId/common/serviceMachineId.ts","sourceMapSources":["vs/platform/serviceMachineId/common/serviceMachineId.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102301,"metadata":{"connectionId":1,"message":{"seq":1129,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/map.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/map.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102301,"metadata":{"connectionId":1,"message":{"seq":1130,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/serviceMachineId/common/serviceMachineId.ts","path":"/Users/roblou/code/vscode/src/vs/platform/serviceMachineId/common/serviceMachineId.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102302,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102302,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/actions/browser/menuEntryActionViewItem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem.ts","sourceMapSources":["vs/platform/actions/browser/menuEntryActionViewItem.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102302,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102302,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/titlebar/menubarControl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.ts","sourceMapSources":["vs/workbench/browser/parts/titlebar/menubarControl.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102303,"metadata":{"connectionId":1,"message":{"seq":1131,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/titlebar/menubarControl.js","sourceReference":1463938967}}}},"level":0} {"tag":"dap.send","timestamp":1588425102303,"metadata":{"connectionId":1,"message":{"seq":1132,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102303,"metadata":{"connectionId":1,"message":{"seq":1133,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102303,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102303,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102303,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/codicon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/codicon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/codicon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/codicon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/codicon.ts","sourceMapSources":["vs/base/common/codicon.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102304,"metadata":{"connectionId":1,"message":{"seq":1134,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js","path":"/Users/roblou/code/vscode/out/vs/platform/actions/browser/menuEntryActionViewItem.js","sourceReference":334456231}}}},"level":0} {"tag":"dap.send","timestamp":1588425102304,"metadata":{"connectionId":1,"message":{"seq":1135,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js","path":"/Users/roblou/code/vscode/out/vs/platform/serviceMachineId/common/serviceMachineId.js","sourceReference":884493276}}}},"level":0} {"tag":"dap.send","timestamp":1588425102304,"metadata":{"connectionId":1,"message":{"seq":1136,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/codicon.js","path":"/Users/roblou/code/vscode/out/vs/base/common/codicon.js","sourceReference":1723624547}}}},"level":0} {"tag":"dap.send","timestamp":1588425102304,"metadata":{"connectionId":1,"message":{"seq":1137,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/codicon.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/codicon.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102304,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102304,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/contextview/contextview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/contextview/contextview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/contextview/contextview.ts","sourceMapSources":["vs/base/browser/ui/contextview/contextview.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102304,"metadata":{"connectionId":1,"message":{"seq":1138,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/contextview/contextview.js","sourceReference":161016240}}}},"level":0} {"tag":"dap.send","timestamp":1588425102305,"metadata":{"connectionId":1,"message":{"seq":1139,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/contextview/contextview.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/contextview/contextview.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102305,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102306,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102306,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/listWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","sourceMapSources":["vs/base/browser/ui/list/listWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102306,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js"},"level":0} {"tag":"dap.send","timestamp":1588425102307,"metadata":{"connectionId":1,"message":{"seq":1140,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102307,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102307,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102307,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/listPaging.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listPaging.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/listPaging.ts","sourceMapSources":["vs/base/browser/ui/list/listPaging.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102308,"metadata":{"connectionId":1,"message":{"seq":1141,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","sourceReference":179663328}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102308,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model.js"},"level":0} {"tag":"dap.send","timestamp":1588425102308,"metadata":{"connectionId":1,"message":{"seq":1142,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listPaging.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listPaging.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102308,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102308,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/objectTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTree.ts","sourceMapSources":["vs/base/browser/ui/tree/objectTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102309,"metadata":{"connectionId":1,"message":{"seq":1143,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listPaging.js","sourceReference":320329767}}}},"level":0} {"tag":"dap.send","timestamp":1588425102309,"metadata":{"connectionId":1,"message":{"seq":1144,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTree.js","sourceReference":1249440203}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102309,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js"},"level":0} {"tag":"dap.send","timestamp":1588425102309,"metadata":{"connectionId":1,"message":{"seq":1145,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTree.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102309,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102309,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/dataTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/dataTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/dataTree.ts","sourceMapSources":["vs/base/browser/ui/tree/dataTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102310,"metadata":{"connectionId":1,"message":{"seq":1146,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/dataTree.js","sourceReference":491621450}}}},"level":0} {"tag":"dap.send","timestamp":1588425102310,"metadata":{"connectionId":1,"message":{"seq":1147,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/dataTree.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/dataTree.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102310,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102311,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102311,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model.ts","sourceMapSources":["vs/editor/common/model.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102311,"metadata":{"connectionId":1,"message":{"seq":1148,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model.js","sourceReference":390261623}}}},"level":0} {"tag":"dap.send","timestamp":1588425102311,"metadata":{"connectionId":1,"message":{"seq":1149,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102312,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102312,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102312,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/theme/common/styler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/theme/common/styler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/theme/common/styler.ts","sourceMapSources":["vs/platform/theme/common/styler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102312,"metadata":{"connectionId":1,"message":{"seq":1150,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/theme/common/styler.ts","path":"/Users/roblou/code/vscode/src/vs/platform/theme/common/styler.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102312,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102313,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102313,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/asyncDataTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/asyncDataTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/asyncDataTree.ts","sourceMapSources":["vs/base/browser/ui/tree/asyncDataTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102313,"metadata":{"connectionId":1,"message":{"seq":1151,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js","path":"/Users/roblou/code/vscode/out/vs/platform/theme/common/styler.js","sourceReference":729459445}}}},"level":0} {"tag":"dap.send","timestamp":1588425102313,"metadata":{"connectionId":1,"message":{"seq":1152,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/asyncDataTree.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/asyncDataTree.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102313,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102314,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102314,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/view/editorColorRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/view/editorColorRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/view/editorColorRegistry.ts","sourceMapSources":["vs/editor/common/view/editorColorRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102314,"metadata":{"connectionId":1,"message":{"seq":1153,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/view/editorColorRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/view/editorColorRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102314,"metadata":{"connectionId":1,"message":{"seq":1154,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/asyncDataTree.js","sourceReference":567589645}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102315,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102315,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/range.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","sourceMapSources":["vs/editor/common/core/range.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102315,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102315,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/worker/simpleWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","sourceMapSources":["vs/base/common/worker/simpleWorker.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102315,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js"},"level":0} {"tag":"dap.send","timestamp":1588425102315,"metadata":{"connectionId":1,"message":{"seq":1155,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102316,"metadata":{"connectionId":1,"message":{"seq":1156,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102316,"metadata":{"connectionId":1,"message":{"seq":1157,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/view/editorColorRegistry.js","sourceReference":1325464660}}}},"level":0} {"tag":"dap.send","timestamp":1588425102316,"metadata":{"connectionId":1,"message":{"seq":1158,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js","sourceReference":915674274}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102317,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102318,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102318,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js"},"level":0} {"tag":"dap.send","timestamp":1588425102318,"metadata":{"connectionId":1,"message":{"seq":1159,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","path":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","sourceReference":832363913}}}},"level":0} {"tag":"dap.send","timestamp":1588425102318,"metadata":{"connectionId":1,"message":{"seq":1160,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","path":"/Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","sourceReference":2038833682}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102318,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102319,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102319,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/worker/defaultWorkerFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/worker/defaultWorkerFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/worker/defaultWorkerFactory.ts","sourceMapSources":["vs/base/worker/defaultWorkerFactory.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102319,"metadata":{"connectionId":1,"message":{"seq":1161,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/worker/defaultWorkerFactory.ts","path":"/Users/roblou/code/vscode/src/vs/base/worker/defaultWorkerFactory.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102320,"metadata":{"connectionId":1,"message":{"seq":1162,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js","sourceReference":552960743}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102320,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/stopwatch.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/stopwatch.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102320,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102320,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/editorSimpleWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","sourceMapSources":["vs/editor/common/services/editorSimpleWorker.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102320,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102320,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/languageConfigurationRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfigurationRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry.ts","sourceMapSources":["vs/editor/common/modes/languageConfigurationRegistry.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102321,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102321,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/editOperation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/editOperation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/editOperation.ts","sourceMapSources":["vs/editor/common/core/editOperation.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102322,"metadata":{"connectionId":1,"message":{"seq":1163,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102322,"metadata":{"connectionId":1,"message":{"seq":1164,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102322,"metadata":{"connectionId":1,"message":{"seq":1165,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/editOperation.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/editOperation.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102322,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102322,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/modesRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/modesRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/modesRegistry.ts","sourceMapSources":["vs/editor/common/modes/modesRegistry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102322,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js"},"level":0} {"tag":"dap.send","timestamp":1588425102323,"metadata":{"connectionId":1,"message":{"seq":1166,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","sourceReference":200789852}}}},"level":0} {"tag":"dap.send","timestamp":1588425102323,"metadata":{"connectionId":1,"message":{"seq":1167,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/editOperation.js","sourceReference":833575555}}}},"level":0} {"tag":"dap.send","timestamp":1588425102323,"metadata":{"connectionId":1,"message":{"seq":1168,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/modesRegistry.js","sourceReference":1177914524}}}},"level":0} {"tag":"dap.send","timestamp":1588425102323,"metadata":{"connectionId":1,"message":{"seq":1169,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/stopwatch.js","path":"/Users/roblou/code/vscode/out/vs/base/common/stopwatch.js","sourceReference":186626977}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102323,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102323,"metadata":{"connectionId":1,"message":{"seq":1170,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/modesRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/modesRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102324,"metadata":{"connectionId":1,"message":{"seq":1171,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js","path":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js","sourceReference":2072700027}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102324,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102325,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102325,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/stopwatch.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/stopwatch.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/stopwatch.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/stopwatch.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/stopwatch.ts","sourceMapSources":["vs/base/common/stopwatch.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102327,"metadata":{"connectionId":1,"message":{"seq":1172,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/stopwatch.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/stopwatch.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102327,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102327,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/undoRedo/common/undoRedo.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/undoRedo/common/undoRedo.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedo.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedo.ts","sourceMapSources":["vs/platform/undoRedo/common/undoRedo.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102327,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/hash.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102327,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js"},"level":0} {"tag":"dap.send","timestamp":1588425102327,"metadata":{"connectionId":1,"message":{"seq":1173,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedo.ts","path":"/Users/roblou/code/vscode/src/vs/platform/undoRedo/common/undoRedo.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102328,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102328,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/config/editorOptions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/config/editorOptions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/config/editorOptions.ts","sourceMapSources":["vs/editor/common/config/editorOptions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102328,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js"},"level":0} {"tag":"dap.send","timestamp":1588425102328,"metadata":{"connectionId":1,"message":{"seq":1174,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/config/editorOptions.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/config/editorOptions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102328,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102328,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/editStack.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/editStack.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/editStack.ts","sourceMapSources":["vs/editor/common/model/editStack.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102329,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425102329,"metadata":{"connectionId":1,"message":{"seq":1175,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/editStack.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/editStack.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102329,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102329,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/hash.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/hash.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/hash.ts","sourceMapSources":["vs/base/common/hash.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102329,"metadata":{"connectionId":1,"message":{"seq":1176,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorOptions.js","sourceReference":1059946247}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102329,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102329,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/semanticTokensProviderStyling.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling.ts","sourceMapSources":["vs/editor/common/services/semanticTokensProviderStyling.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102330,"metadata":{"connectionId":1,"message":{"seq":1177,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102330,"metadata":{"connectionId":1,"message":{"seq":1178,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102330,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102330,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/position.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","sourceMapSources":["vs/editor/common/core/position.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102330,"metadata":{"connectionId":1,"message":{"seq":1179,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/semanticTokensProviderStyling.js","sourceReference":1326209709}}}},"level":0} {"tag":"dap.send","timestamp":1588425102330,"metadata":{"connectionId":1,"message":{"seq":1180,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js","sourceReference":1577954232}}}},"level":0} {"tag":"dap.send","timestamp":1588425102330,"metadata":{"connectionId":1,"message":{"seq":1181,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102331,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102331,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102331,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/widget/diffEditorWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffEditorWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/widget/diffEditorWidget.ts","sourceMapSources":["vs/editor/browser/widget/diffEditorWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102331,"metadata":{"connectionId":1,"message":{"seq":1182,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/editStack.js","sourceReference":2025750147}}}},"level":0} {"tag":"dap.send","timestamp":1588425102332,"metadata":{"connectionId":1,"message":{"seq":1183,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/hash.js","path":"/Users/roblou/code/vscode/out/vs/base/common/hash.js","sourceReference":1281559914}}}},"level":0} {"tag":"dap.send","timestamp":1588425102332,"metadata":{"connectionId":1,"message":{"seq":1184,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffEditorWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffEditorWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102332,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102333,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102333,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/widget/codeEditorWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/codeEditorWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/widget/codeEditorWidget.ts","sourceMapSources":["vs/editor/browser/widget/codeEditorWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102333,"metadata":{"connectionId":1,"message":{"seq":1185,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/codeEditorWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/codeEditorWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102333,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102333,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/widget/diffNavigator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffNavigator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/widget/diffNavigator.ts","sourceMapSources":["vs/editor/browser/widget/diffNavigator.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102333,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js"},"level":0} {"tag":"dap.send","timestamp":1588425102334,"metadata":{"connectionId":1,"message":{"seq":1186,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffNavigator.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffNavigator.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102334,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102335,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102335,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/keybindingResolver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingResolver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingResolver.ts","sourceMapSources":["vs/platform/keybinding/common/keybindingResolver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102335,"metadata":{"connectionId":1,"message":{"seq":1187,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffEditorWidget.js","sourceReference":2123403142}}}},"level":0} {"tag":"dap.send","timestamp":1588425102335,"metadata":{"connectionId":1,"message":{"seq":1188,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingResolver.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/keybindingResolver.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102336,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102336,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/bracketMatching/bracketMatching.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/bracketMatching/bracketMatching.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/bracketMatching/bracketMatching.ts","sourceMapSources":["vs/editor/contrib/bracketMatching/bracketMatching.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102336,"metadata":{"connectionId":1,"message":{"seq":1189,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/bracketMatching/bracketMatching.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/bracketMatching/bracketMatching.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102336,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102337,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102337,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/caretOperations/transpose.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/transpose.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/transpose.ts","sourceMapSources":["vs/editor/contrib/caretOperations/transpose.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102337,"metadata":{"connectionId":1,"message":{"seq":1190,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/transpose.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/transpose.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102337,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js"},"level":0} {"tag":"dap.send","timestamp":1588425102338,"metadata":{"connectionId":1,"message":{"seq":1191,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js","sourceReference":1483535115}}}},"level":0} {"tag":"dap.send","timestamp":1588425102338,"metadata":{"connectionId":1,"message":{"seq":1192,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffNavigator.js","sourceReference":1138203183}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102338,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js"},"level":0} {"tag":"dap.send","timestamp":1588425102338,"metadata":{"connectionId":1,"message":{"seq":1193,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/keybindingResolver.js","sourceReference":922918358}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102339,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102339,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/clipboard/clipboard.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/clipboard/clipboard.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/clipboard/clipboard.ts","sourceMapSources":["vs/editor/contrib/clipboard/clipboard.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102339,"metadata":{"connectionId":1,"message":{"seq":1194,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/clipboard/clipboard.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/clipboard/clipboard.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102339,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102340,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102340,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/caretOperations/caretOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/caretOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/caretOperations.ts","sourceMapSources":["vs/editor/contrib/caretOperations/caretOperations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102340,"metadata":{"connectionId":1,"message":{"seq":1195,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/caretOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/caretOperations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102340,"metadata":{"connectionId":1,"message":{"seq":1196,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/bracketMatching/bracketMatching.js","sourceReference":1319495608}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102341,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102341,"metadata":{"connectionId":1,"message":{"seq":1197,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/transpose.js","sourceReference":34333609}}}},"level":0} {"tag":"dap.send","timestamp":1588425102341,"metadata":{"connectionId":1,"message":{"seq":1198,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/caretOperations.js","sourceReference":1812090451}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102341,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102341,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/coreCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/coreCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/coreCommands.ts","sourceMapSources":["vs/editor/browser/controller/coreCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102342,"metadata":{"connectionId":1,"message":{"seq":1199,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/coreCommands.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/coreCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102342,"metadata":{"connectionId":1,"message":{"seq":1200,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/clipboard/clipboard.js","sourceReference":2022180818}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102342,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102342,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102343,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102343,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/codeActionContributions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionContributions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionContributions.ts","sourceMapSources":["vs/editor/contrib/codeAction/codeActionContributions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102343,"metadata":{"connectionId":1,"message":{"seq":1201,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionContributions.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionContributions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102343,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102344,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102344,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codelens/codelensController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensController.ts","sourceMapSources":["vs/editor/contrib/codelens/codelensController.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102344,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102344,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/colorPicker/colorDetector.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorDetector.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorDetector.ts","sourceMapSources":["vs/editor/contrib/colorPicker/colorDetector.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102344,"metadata":{"connectionId":1,"message":{"seq":1202,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensController.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensController.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102344,"metadata":{"connectionId":1,"message":{"seq":1203,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorDetector.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorDetector.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102344,"metadata":{"connectionId":1,"message":{"seq":1204,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/coreCommands.js","sourceReference":348800998}}}},"level":0} {"tag":"dap.send","timestamp":1588425102344,"metadata":{"connectionId":1,"message":{"seq":1205,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionContributions.js","sourceReference":266047067}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102344,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js"},"level":0} {"tag":"dap.send","timestamp":1588425102345,"metadata":{"connectionId":1,"message":{"seq":1206,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorDetector.js","sourceReference":1687018029}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102345,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102345,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/comment/comment.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/comment.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/comment/comment.ts","sourceMapSources":["vs/editor/contrib/comment/comment.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102345,"metadata":{"connectionId":1,"message":{"seq":1207,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/comment.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/comment.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102345,"metadata":{"connectionId":1,"message":{"seq":1208,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensController.js","sourceReference":1940441284}}}},"level":0} {"tag":"dap.send","timestamp":1588425102345,"metadata":{"connectionId":1,"message":{"seq":1209,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/comment.js","sourceReference":679945893}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102346,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102346,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102346,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/contextmenu/contextmenu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/contextmenu/contextmenu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/contextmenu/contextmenu.ts","sourceMapSources":["vs/editor/contrib/contextmenu/contextmenu.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102346,"metadata":{"connectionId":1,"message":{"seq":1210,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/contextmenu/contextmenu.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/contextmenu/contextmenu.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102347,"metadata":{"connectionId":1,"message":{"seq":1211,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/contextmenu/contextmenu.js","sourceReference":585412133}}}},"level":0} {"tag":"dap.send","timestamp":1588425102347,"metadata":{"connectionId":1,"message":{"seq":1212,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js","sourceReference":1040272687}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102347,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102348,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102348,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102348,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/cursorUndo/cursorUndo.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/cursorUndo/cursorUndo.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo.ts","sourceMapSources":["vs/editor/contrib/cursorUndo/cursorUndo.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102348,"metadata":{"connectionId":1,"message":{"seq":1213,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102348,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102349,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102349,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/findController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/findController.ts","sourceMapSources":["vs/editor/contrib/find/findController.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102349,"metadata":{"connectionId":1,"message":{"seq":1214,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findController.js","sourceReference":1925585213}}}},"level":0} {"tag":"dap.send","timestamp":1588425102349,"metadata":{"connectionId":1,"message":{"seq":1215,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findController.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findController.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102349,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102349,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/fontZoom/fontZoom.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/fontZoom/fontZoom.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/fontZoom/fontZoom.ts","sourceMapSources":["vs/editor/contrib/fontZoom/fontZoom.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102350,"metadata":{"connectionId":1,"message":{"seq":1216,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/fontZoom/fontZoom.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/fontZoom/fontZoom.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102351,"metadata":{"connectionId":1,"message":{"seq":1217,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js","sourceReference":2132818221}}}},"level":0} {"tag":"dap.send","timestamp":1588425102351,"metadata":{"connectionId":1,"message":{"seq":1218,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/fontZoom/fontZoom.js","sourceReference":2047728720}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102351,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102351,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102351,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/folding.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/folding.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/folding.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/folding.ts","sourceMapSources":["vs/editor/contrib/folding/folding.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102352,"metadata":{"connectionId":1,"message":{"seq":1219,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js","sourceReference":1508466197}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102352,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102352,"metadata":{"connectionId":1,"message":{"seq":1220,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/folding.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/folding.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102352,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102353,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102353,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/documentSymbols.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/documentSymbols.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/documentSymbols.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/documentSymbols.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/documentSymbols.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102353,"metadata":{"connectionId":1,"message":{"seq":1221,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js","sourceReference":1723881311}}}},"level":0} {"tag":"dap.send","timestamp":1588425102353,"metadata":{"connectionId":1,"message":{"seq":1222,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/documentSymbols.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/documentSymbols.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102353,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102353,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/format/formatActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formatActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/formatActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/format/formatActions.ts","sourceMapSources":["vs/editor/contrib/format/formatActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102354,"metadata":{"connectionId":1,"message":{"seq":1223,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/formatActions.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/formatActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102354,"metadata":{"connectionId":1,"message":{"seq":1224,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js","sourceReference":22000092}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102354,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102354,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102354,"metadata":{"connectionId":1,"message":{"seq":1225,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102354,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js"},"level":0} {"tag":"dap.send","timestamp":1588425102356,"metadata":{"connectionId":1,"message":{"seq":1226,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js","sourceReference":674222271}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102356,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102356,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102356,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoError/gotoError.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoError.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoError.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoError.ts","sourceMapSources":["vs/editor/contrib/gotoError/gotoError.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102357,"metadata":{"connectionId":1,"message":{"seq":1227,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoError.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoError.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102357,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102357,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/dnd/dnd.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dnd.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dnd.ts","sourceMapSources":["vs/editor/contrib/dnd/dnd.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102357,"metadata":{"connectionId":1,"message":{"seq":1228,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dnd.js","sourceReference":1415164042}}}},"level":0} {"tag":"dap.send","timestamp":1588425102357,"metadata":{"connectionId":1,"message":{"seq":1229,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dnd.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dnd.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102358,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102358,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102359,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102359,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/goToCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToCommands.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/goToCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102359,"metadata":{"connectionId":1,"message":{"seq":1230,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToCommands.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102359,"metadata":{"connectionId":1,"message":{"seq":1231,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToCommands.js","sourceReference":1195171297}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102359,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102360,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102360,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/indentation/indentation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentation.ts","sourceMapSources":["vs/editor/contrib/indentation/indentation.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102360,"metadata":{"connectionId":1,"message":{"seq":1232,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentation.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentation.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102360,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102361,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102361,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts","sourceMapSources":["vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102361,"metadata":{"connectionId":1,"message":{"seq":1233,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102361,"metadata":{"connectionId":1,"message":{"seq":1234,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentation.js","sourceReference":246823147}}}},"level":0} {"tag":"dap.send","timestamp":1588425102361,"metadata":{"connectionId":1,"message":{"seq":1235,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js","sourceReference":1992011896}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102361,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102361,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/hover/hover.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hover.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/hover/hover.ts","sourceMapSources":["vs/editor/contrib/hover/hover.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102362,"metadata":{"connectionId":1,"message":{"seq":1236,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hover.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hover.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102362,"metadata":{"connectionId":1,"message":{"seq":1237,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hover.js","sourceReference":2044503551}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102362,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102363,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102363,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/linesOperations/linesOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/linesOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/linesOperations.ts","sourceMapSources":["vs/editor/contrib/linesOperations/linesOperations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102364,"metadata":{"connectionId":1,"message":{"seq":1238,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/linesOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/linesOperations.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102364,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102364,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js"},"level":0} {"tag":"dap.send","timestamp":1588425102365,"metadata":{"connectionId":1,"message":{"seq":1239,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/linesOperations.js","sourceReference":807152324}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102365,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102365,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/multicursor/multicursor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/multicursor/multicursor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/multicursor/multicursor.ts","sourceMapSources":["vs/editor/contrib/multicursor/multicursor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102368,"metadata":{"connectionId":1,"message":{"seq":1240,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/multicursor/multicursor.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/multicursor/multicursor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102368,"metadata":{"connectionId":1,"message":{"seq":1241,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/multicursor/multicursor.js","sourceReference":523620345}}}},"level":0} {"tag":"dap.send","timestamp":1588425102368,"metadata":{"connectionId":1,"message":{"seq":1242,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js","sourceReference":105993550}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102369,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102369,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102369,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/rename/onTypeRename.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/onTypeRename.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/onTypeRename.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/rename/onTypeRename.ts","sourceMapSources":["vs/editor/contrib/rename/onTypeRename.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102369,"metadata":{"connectionId":1,"message":{"seq":1243,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/onTypeRename.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/onTypeRename.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102369,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102370,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/links/links.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/links/links.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/links/links.ts","sourceMapSources":["vs/editor/contrib/links/links.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102370,"metadata":{"connectionId":1,"message":{"seq":1244,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/links/links.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/links/links.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102370,"metadata":{"connectionId":1,"message":{"seq":1245,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","sourceReference":204584906}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102370,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102371,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102371,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/parameterHints/parameterHints.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHints.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHints.ts","sourceMapSources":["vs/editor/contrib/parameterHints/parameterHints.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102371,"metadata":{"connectionId":1,"message":{"seq":1246,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHints.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHints.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102371,"metadata":{"connectionId":1,"message":{"seq":1247,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.js","sourceReference":1915862551}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102371,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102372,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102372,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/smartSelect/smartSelect.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/smartSelect.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/smartSelect.ts","sourceMapSources":["vs/editor/contrib/smartSelect/smartSelect.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102372,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js"},"level":0} {"tag":"dap.send","timestamp":1588425102373,"metadata":{"connectionId":1,"message":{"seq":1248,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/smartSelect.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/smartSelect.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102373,"metadata":{"connectionId":1,"message":{"seq":1249,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/smartSelect.js","sourceReference":138367574}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102374,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102374,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102374,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggestController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestController.ts","sourceMapSources":["vs/editor/contrib/suggest/suggestController.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102374,"metadata":{"connectionId":1,"message":{"seq":1250,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestController.js","sourceReference":1225760940}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102375,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js"},"level":0} {"tag":"dap.send","timestamp":1588425102375,"metadata":{"connectionId":1,"message":{"seq":1251,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestController.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestController.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102375,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102375,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102375,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/snippet/snippetController2.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetController2.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetController2.ts","sourceMapSources":["vs/editor/contrib/snippet/snippetController2.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102376,"metadata":{"connectionId":1,"message":{"seq":1252,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetController2.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetController2.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102376,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102376,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/tokenization/tokenization.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/tokenization/tokenization.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/tokenization/tokenization.ts","sourceMapSources":["vs/editor/contrib/tokenization/tokenization.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102376,"metadata":{"connectionId":1,"message":{"seq":1253,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetController2.js","sourceReference":1455161438}}}},"level":0} {"tag":"dap.send","timestamp":1588425102377,"metadata":{"connectionId":1,"message":{"seq":1254,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/tokenization/tokenization.js","sourceReference":810526719}}}},"level":0} {"tag":"dap.send","timestamp":1588425102377,"metadata":{"connectionId":1,"message":{"seq":1255,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/tokenization/tokenization.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/tokenization/tokenization.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102377,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102377,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102377,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.ts","sourceMapSources":["vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102378,"metadata":{"connectionId":1,"message":{"seq":1256,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js","sourceReference":1170600079}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102378,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js"},"level":0} {"tag":"dap.send","timestamp":1588425102378,"metadata":{"connectionId":1,"message":{"seq":1257,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102378,"metadata":{"connectionId":1,"message":{"seq":1258,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js","sourceReference":1794901067}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102379,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102379,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102379,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts","sourceMapSources":["vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102379,"metadata":{"connectionId":1,"message":{"seq":1259,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102380,"metadata":{"connectionId":1,"message":{"seq":1260,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js","sourceReference":1522730798}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102380,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102380,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/rename/rename.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/rename.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/rename.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/rename/rename.ts","sourceMapSources":["vs/editor/contrib/rename/rename.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102380,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js"},"level":0} {"tag":"dap.send","timestamp":1588425102380,"metadata":{"connectionId":1,"message":{"seq":1261,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/rename.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/rename.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102381,"metadata":{"connectionId":1,"message":{"seq":1262,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js","sourceReference":1041354018}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102381,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102382,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102382,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/wordOperations/wordOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordOperations/wordOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordOperations/wordOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/wordOperations/wordOperations.ts","sourceMapSources":["vs/editor/contrib/wordOperations/wordOperations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102382,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js"},"level":0} {"tag":"dap.send","timestamp":1588425102382,"metadata":{"connectionId":1,"message":{"seq":1263,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordOperations/wordOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordOperations/wordOperations.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102393,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102393,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102393,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/wordHighlighter/wordHighlighter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordHighlighter/wordHighlighter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/wordHighlighter/wordHighlighter.ts","sourceMapSources":["vs/editor/contrib/wordHighlighter/wordHighlighter.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102393,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425102393,"metadata":{"connectionId":1,"message":{"seq":1264,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordHighlighter/wordHighlighter.js","sourceReference":1526774868}}}},"level":0} {"tag":"dap.send","timestamp":1588425102394,"metadata":{"connectionId":1,"message":{"seq":1265,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js","sourceReference":1169886618}}}},"level":0} {"tag":"dap.send","timestamp":1588425102394,"metadata":{"connectionId":1,"message":{"seq":1266,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js","sourceReference":1537971967}}}},"level":0} {"tag":"dap.send","timestamp":1588425102394,"metadata":{"connectionId":1,"message":{"seq":1267,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js","sourceReference":1012077574}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102394,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js"},"level":0} {"tag":"dap.send","timestamp":1588425102394,"metadata":{"connectionId":1,"message":{"seq":1268,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordHighlighter/wordHighlighter.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordHighlighter/wordHighlighter.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102394,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102394,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/wordPartOperations/wordPartOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/wordPartOperations/wordPartOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations.ts","sourceMapSources":["vs/editor/contrib/wordPartOperations/wordPartOperations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102394,"metadata":{"connectionId":1,"message":{"seq":1269,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102395,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102395,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standaloneStrings.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standaloneStrings.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standaloneStrings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standaloneStrings.ts","sourceMapSources":["vs/editor/common/standaloneStrings.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102395,"metadata":{"connectionId":1,"message":{"seq":1270,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js","sourceReference":79370578}}}},"level":0} {"tag":"dap.send","timestamp":1588425102395,"metadata":{"connectionId":1,"message":{"seq":1271,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js","sourceReference":109390454}}}},"level":0} {"tag":"dap.send","timestamp":1588425102395,"metadata":{"connectionId":1,"message":{"seq":1272,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standaloneStrings.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standaloneStrings.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102395,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102395,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/jsonValidationExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/jsonValidationExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts","sourceMapSources":["vs/workbench/api/common/jsonValidationExtensionPoint.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102396,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102396,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/colorExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.ts","sourceMapSources":["vs/workbench/services/themes/common/colorExtensionPoint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102396,"metadata":{"connectionId":1,"message":{"seq":1273,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102396,"metadata":{"connectionId":1,"message":{"seq":1274,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102396,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102396,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/codicons/codiconStyles.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconStyles.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconStyles.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconStyles.ts","sourceMapSources":["vs/base/browser/ui/codicons/codiconStyles.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102396,"metadata":{"connectionId":1,"message":{"seq":1275,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconStyles.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconStyles.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102397,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102397,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102398,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102398,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts","sourceMapSources":["vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102398,"metadata":{"connectionId":1,"message":{"seq":1276,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js","sourceReference":646239115}}}},"level":0} {"tag":"dap.send","timestamp":1588425102398,"metadata":{"connectionId":1,"message":{"seq":1277,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102398,"metadata":{"connectionId":1,"message":{"seq":1278,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js","sourceReference":1492527205}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102398,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102399,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102399,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadCodeInsets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCodeInsets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadCodeInsets.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102399,"metadata":{"connectionId":1,"message":{"seq":1279,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102399,"metadata":{"connectionId":1,"message":{"seq":1280,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js","sourceReference":1550853511}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102399,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102400,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102400,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCommands.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102400,"metadata":{"connectionId":1,"message":{"seq":1281,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102400,"metadata":{"connectionId":1,"message":{"seq":1282,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js","sourceReference":873351247}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102401,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102401,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102401,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadConfiguration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConfiguration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadConfiguration.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102401,"metadata":{"connectionId":1,"message":{"seq":1283,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102402,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102402,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102402,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102402,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js"},"level":0} {"tag":"dap.send","timestamp":1588425102403,"metadata":{"connectionId":1,"message":{"seq":1284,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102403,"metadata":{"connectionId":1,"message":{"seq":1285,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js","sourceReference":241684418}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102403,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102403,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadClipboard.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadClipboard.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadClipboard.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadClipboard.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102403,"metadata":{"connectionId":1,"message":{"seq":1286,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadClipboard.js","sourceReference":1041348925}}}},"level":0} {"tag":"dap.send","timestamp":1588425102403,"metadata":{"connectionId":1,"message":{"seq":1287,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadClipboard.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadClipboard.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102404,"metadata":{"connectionId":1,"message":{"seq":1288,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","sourceReference":298151115}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102404,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102404,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102404,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadConsole.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConsole.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConsole.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadConsole.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102404,"metadata":{"connectionId":1,"message":{"seq":1289,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConsole.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadConsole.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102405,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js"},"level":0} {"tag":"dap.send","timestamp":1588425102405,"metadata":{"connectionId":1,"message":{"seq":1290,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js","sourceReference":1786817118}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102406,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102406,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102406,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDebugService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDebugService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDebugService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDebugService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDebugService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102406,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102406,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDiagnostics.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDiagnostics.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102406,"metadata":{"connectionId":1,"message":{"seq":1291,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDiagnostics.js","sourceReference":526788033}}}},"level":0} {"tag":"dap.send","timestamp":1588425102406,"metadata":{"connectionId":1,"message":{"seq":1292,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDebugService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDebugService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102406,"metadata":{"connectionId":1,"message":{"seq":1293,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102407,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js"},"level":0} {"tag":"dap.send","timestamp":1588425102407,"metadata":{"connectionId":1,"message":{"seq":1294,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js","sourceReference":1976698964}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102407,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102408,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102408,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDecorations.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDecorations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102408,"metadata":{"connectionId":1,"message":{"seq":1295,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102408,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102408,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDialogs.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDialogs.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDialogs.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDialogs.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102408,"metadata":{"connectionId":1,"message":{"seq":1296,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDialogs.js","sourceReference":1474455869}}}},"level":0} {"tag":"dap.send","timestamp":1588425102409,"metadata":{"connectionId":1,"message":{"seq":1297,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js","sourceReference":1303445177}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102409,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js"},"level":0} {"tag":"dap.send","timestamp":1588425102409,"metadata":{"connectionId":1,"message":{"seq":1298,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDialogs.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDialogs.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102409,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102409,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDocumentContentProviders.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentContentProviders.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDocumentContentProviders.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102410,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js"},"level":0} {"tag":"dap.send","timestamp":1588425102410,"metadata":{"connectionId":1,"message":{"seq":1299,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102410,"metadata":{"connectionId":1,"message":{"seq":1300,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js","sourceReference":478075627}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102410,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102411,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102411,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDocuments.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocuments.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocuments.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocuments.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDocuments.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102411,"metadata":{"connectionId":1,"message":{"seq":1301,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js","sourceReference":319525483}}}},"level":0} {"tag":"dap.send","timestamp":1588425102411,"metadata":{"connectionId":1,"message":{"seq":1302,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocuments.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocuments.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102411,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102412,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102412,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102412,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102412,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadEditors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditors.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadEditors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102412,"metadata":{"connectionId":1,"message":{"seq":1303,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102412,"metadata":{"connectionId":1,"message":{"seq":1304,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditors.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102412,"metadata":{"connectionId":1,"message":{"seq":1305,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditors.js","sourceReference":1116825865}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102412,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js"},"level":0} {"tag":"dap.send","timestamp":1588425102413,"metadata":{"connectionId":1,"message":{"seq":1306,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js","sourceReference":1252806118}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102413,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102414,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102414,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditor.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102414,"metadata":{"connectionId":1,"message":{"seq":1307,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102414,"metadata":{"connectionId":1,"message":{"seq":1308,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js","sourceReference":524418620}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102414,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102414,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadFileSystem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadFileSystem.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102415,"metadata":{"connectionId":1,"message":{"seq":1309,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102415,"metadata":{"connectionId":1,"message":{"seq":1310,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js","sourceReference":98659589}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102415,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102415,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102415,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadErrors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadErrors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadErrors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadErrors.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadErrors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102416,"metadata":{"connectionId":1,"message":{"seq":1311,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadErrors.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadErrors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102416,"metadata":{"connectionId":1,"message":{"seq":1312,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js","sourceReference":528746695}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102416,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102417,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js"},"level":0} {"tag":"dap.send","timestamp":1588425102418,"metadata":{"connectionId":1,"message":{"seq":1313,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js","sourceReference":1258919893}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102418,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102418,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadFileSystemEventService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadFileSystemEventService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadFileSystemEventService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102419,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js"},"level":0} {"tag":"dap.send","timestamp":1588425102421,"metadata":{"connectionId":1,"message":{"seq":1314,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102421,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102422,"metadata":{"connectionId":1,"message":{"seq":1315,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js","sourceReference":1388953620}}}},"level":0} {"tag":"dap.send","timestamp":1588425102422,"metadata":{"connectionId":1,"message":{"seq":1316,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js","sourceReference":1767047518}}}},"level":0} {"tag":"dap.send","timestamp":1588425102422,"metadata":{"connectionId":1,"message":{"seq":1317,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js","sourceReference":1886626004}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102423,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102423,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadKeytar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadKeytar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadKeytar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadKeytar.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadKeytar.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102424,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102426,"metadata":{"connectionId":1,"message":{"seq":1318,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadKeytar.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadKeytar.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102426,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102426,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadLanguageFeatures.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguageFeatures.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadLanguageFeatures.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102427,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102427,"metadata":{"connectionId":1,"message":{"seq":1319,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js","sourceReference":39109492}}}},"level":0} {"tag":"dap.send","timestamp":1588425102428,"metadata":{"connectionId":1,"message":{"seq":1320,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102428,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102428,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadLanguages.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLanguages.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguages.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguages.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadLanguages.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102428,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js"},"level":0} {"tag":"dap.send","timestamp":1588425102429,"metadata":{"connectionId":1,"message":{"seq":1321,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js","sourceReference":931235986}}}},"level":0} {"tag":"dap.send","timestamp":1588425102429,"metadata":{"connectionId":1,"message":{"seq":1322,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguages.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLanguages.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102429,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102429,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadLogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLogService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadLogService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102430,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js"},"level":0} {"tag":"dap.send","timestamp":1588425102430,"metadata":{"connectionId":1,"message":{"seq":1323,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js","sourceReference":1480812221}}}},"level":0} {"tag":"dap.send","timestamp":1588425102430,"metadata":{"connectionId":1,"message":{"seq":1324,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLogService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLogService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102430,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102430,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadMessageService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadMessageService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadMessageService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadMessageService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadMessageService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102431,"metadata":{"connectionId":1,"message":{"seq":1325,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js","sourceReference":777484223}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102432,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102432,"metadata":{"connectionId":1,"message":{"seq":1326,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadMessageService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadMessageService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102432,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102432,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadExtensionService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadExtensionService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadExtensionService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102433,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js"},"level":0} {"tag":"dap.send","timestamp":1588425102433,"metadata":{"connectionId":1,"message":{"seq":1327,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102433,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102433,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadProgress.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadProgress.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadProgress.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadProgress.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadProgress.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102434,"metadata":{"connectionId":1,"message":{"seq":1328,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js","sourceReference":1941156724}}}},"level":0} {"tag":"dap.send","timestamp":1588425102434,"metadata":{"connectionId":1,"message":{"seq":1329,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js","sourceReference":1138772248}}}},"level":0} {"tag":"dap.send","timestamp":1588425102434,"metadata":{"connectionId":1,"message":{"seq":1330,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadProgress.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadProgress.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102435,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102435,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102435,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadSaveParticipant.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSaveParticipant.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadSaveParticipant.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102436,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js"},"level":0} {"tag":"dap.send","timestamp":1588425102436,"metadata":{"connectionId":1,"message":{"seq":1331,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102436,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102436,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadOutputService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadOutputService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadOutputService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadOutputService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadOutputService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102436,"metadata":{"connectionId":1,"message":{"seq":1332,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js","sourceReference":507800462}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102436,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js"},"level":0} {"tag":"dap.send","timestamp":1588425102437,"metadata":{"connectionId":1,"message":{"seq":1333,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadOutputService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadOutputService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102437,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102437,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadSearch.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSearch.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSearch.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSearch.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadSearch.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102437,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js"},"level":0} {"tag":"dap.send","timestamp":1588425102438,"metadata":{"connectionId":1,"message":{"seq":1334,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSearch.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSearch.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102438,"metadata":{"connectionId":1,"message":{"seq":1335,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js","sourceReference":1366847685}}}},"level":0} {"tag":"dap.send","timestamp":1588425102438,"metadata":{"connectionId":1,"message":{"seq":1336,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js","sourceReference":1734315112}}}},"level":0} {"tag":"dap.send","timestamp":1588425102438,"metadata":{"connectionId":1,"message":{"seq":1337,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js","sourceReference":1167095114}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102438,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102438,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadStorage.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStorage.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStorage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStorage.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadStorage.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102439,"metadata":{"connectionId":1,"message":{"seq":1338,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStorage.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStorage.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102439,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102439,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadSCM.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadSCM.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSCM.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSCM.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadSCM.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102439,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102439,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadQuickOpen.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadQuickOpen.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadQuickOpen.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102439,"metadata":{"connectionId":1,"message":{"seq":1339,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSCM.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadSCM.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102439,"metadata":{"connectionId":1,"message":{"seq":1340,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102440,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102440,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadStatusBar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadStatusBar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadStatusBar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102440,"metadata":{"connectionId":1,"message":{"seq":1341,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.ts","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102470,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1149","url":"file:///Users/roblou/code/vscode/out/vs/base/common/range.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"1be271161e15e9034260f4fa9972e1d325bf065e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"range.js.map","hasSourceURL":false,"isModule":false,"length":2126,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1150","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"041298019316d9b92e4c13afc7b7e4f2699fa70e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"splice.js.map","hasSourceURL":false,"isModule":false,"length":953,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1151","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js","startLine":0,"startColumn":0,"endLine":40,"endColumn":3,"executionContextId":1,"hash":"10dfa18664fe01b83e35cdfb568183576d53bee1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"list.js.map","hasSourceURL":false,"isModule":false,"length":1838,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","startLine":0,"startColumn":0,"endLine":989,"endColumn":3,"executionContextId":1,"hash":"35d35ab74bf397bf6d52ac1f5aba6f7170a99f91","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"listView.js.map","hasSourceURL":false,"isModule":false,"length":51571,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1153","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js","startLine":0,"startColumn":0,"endLine":196,"endColumn":3,"executionContextId":1,"hash":"140e2a7f1ade82561b925e491a7e598d23f4b565","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"objectTreeModel.js.map","hasSourceURL":false,"isModule":false,"length":9067,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1154","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js","startLine":0,"startColumn":0,"endLine":361,"endColumn":3,"executionContextId":1,"hash":"197297375c3ca22d4410ea6c430177412927af5e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"compressedObjectTreeModel.js.map","hasSourceURL":false,"isModule":false,"length":16142,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1155","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","startLine":0,"startColumn":0,"endLine":1290,"endColumn":3,"executionContextId":1,"hash":"16f33eab5d9ae8002546625b50d9f95a02ced10c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractTree.js.map","hasSourceURL":false,"isModule":false,"length":61100,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.91","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/media/tree.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.241957,"wallTime":1588425102.120415,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102471,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1156","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":3,"executionContextId":1,"hash":"10cb6698313aa1da60057e234d0291f170341dd0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tree.js.map","hasSourceURL":false,"isModule":false,"length":3071,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102472,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1157","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js","startLine":0,"startColumn":0,"endLine":15,"endColumn":3,"executionContextId":1,"hash":"2a8d02f71a56319d0b275b4f0293255a5342f19a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"treeIcons.js.map","hasSourceURL":false,"isModule":false,"length":1411,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102472,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1158","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js","startLine":0,"startColumn":0,"endLine":476,"endColumn":3,"executionContextId":1,"hash":"22cb05288efabf4c444102ed3227c9ad35595276","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indexTreeModel.js.map","hasSourceURL":false,"isModule":false,"length":21802,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102472,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1159","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js","startLine":0,"startColumn":0,"endLine":65,"endColumn":3,"executionContextId":1,"hash":"1f81c4c72d69ed5432d0368057ed90b526f1799f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languageConfiguration.js.map","hasSourceURL":false,"isModule":false,"length":2843,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102472,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1160","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"1fb7d61827b531407e36a4746dcbac1f757ac40b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"characterPair.js.map","hasSourceURL":false,"isModule":false,"length":3142,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102472,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1161","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"21bf297384421ca82ed5121935bbc8a30875658b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indentRules.js.map","hasSourceURL":false,"isModule":false,"length":3146,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102472,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1162","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"0d8823ac8921602b2caeee6ec515077b35b870d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"electricCharacter.js.map","hasSourceURL":false,"isModule":false,"length":2985,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1163","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js","startLine":0,"startColumn":0,"endLine":106,"endColumn":3,"executionContextId":1,"hash":"215a58143761d61245396f7f5377527a2890fc97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"onEnter.js.map","hasSourceURL":false,"isModule":false,"length":4720,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1164","url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","startLine":0,"startColumn":0,"endLine":831,"endColumn":3,"executionContextId":1,"hash":"0d4d6db89e0f5a043d724a606df6d77a63594963","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diff.js.map","hasSourceURL":false,"isModule":false,"length":50333,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1165","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","startLine":0,"startColumn":0,"endLine":113,"endColumn":3,"executionContextId":1,"hash":"197af1bc5962d401387f639704c96a6b0988211c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mirrorTextModel.js.map","hasSourceURL":false,"isModule":false,"length":5532,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1166","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","startLine":0,"startColumn":0,"endLine":394,"endColumn":3,"executionContextId":1,"hash":"20f2759038f20c2a7e180c363716af1b68ee7447","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffComputer.js.map","hasSourceURL":false,"isModule":false,"length":22133,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1167","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","startLine":0,"startColumn":0,"endLine":297,"endColumn":3,"executionContextId":1,"hash":"2f749aef73e527287b46ac59c1980c557edb9d39","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linkComputer.js.map","hasSourceURL":false,"isModule":false,"length":14887,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1168","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","startLine":0,"startColumn":0,"endLine":95,"endColumn":3,"executionContextId":1,"hash":"374cb60b289f48ec7218dd7c151355731742648b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inplaceReplaceSupport.js.map","hasSourceURL":false,"isModule":false,"length":4038,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1169","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js","startLine":0,"startColumn":0,"endLine":211,"endColumn":3,"executionContextId":1,"hash":"0cbaf23433bf820d25ed0309b251f4912a0aba21","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fastDomNode.js.map","hasSourceURL":false,"isModule":false,"length":7323,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1170","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js","startLine":0,"startColumn":0,"endLine":235,"endColumn":3,"executionContextId":1,"hash":"030a84e2137e417e711ba6a10fdcc0442f6ed80f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textChange.js.map","hasSourceURL":false,"isModule":false,"length":10410,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1171","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"2b8d03e21ddef8067b234f8333642c973f4c94d0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"standaloneBase.js.map","hasSourceURL":false,"isModule":false,"length":2220,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102473,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1172","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js","startLine":0,"startColumn":0,"endLine":150,"endColumn":3,"executionContextId":1,"hash":"18319dc71ac9c5681e0ed58aa921a7d1223a7f3d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorState.js.map","hasSourceURL":false,"isModule":false,"length":7218,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102474,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1173","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js","startLine":0,"startColumn":0,"endLine":692,"endColumn":3,"executionContextId":1,"hash":"195204c4736f229c7d84c541245d69e85f248700","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffReview.js.map","hasSourceURL":false,"isModule":false,"length":36350,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102475,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.92","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/media/diffReview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.252052,"wallTime":1588425102.130509,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102476,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1174","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js","startLine":0,"startColumn":0,"endLine":127,"endColumn":3,"executionContextId":1,"hash":"225133eb751312052bf9bf0061339cf311216bb8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"stringBuilder.js.map","hasSourceURL":false,"isModule":false,"length":5037,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102476,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1175","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js","startLine":0,"startColumn":0,"endLine":303,"endColumn":3,"executionContextId":1,"hash":"036389d2803552f8738cb5e38189e4b50fbd9aa7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sash.js.map","hasSourceURL":false,"isModule":false,"length":14144,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.93","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.25412,"wallTime":1588425102.132578,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1176","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":3,"executionContextId":1,"hash":"3b5c451380b3b8e467fe181b782cb4b351399d75","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"overviewZoneManager.js.map","hasSourceURL":false,"isModule":false,"length":6774,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1177","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"2e5d10361d5e43664fa18f8fa82ba10958a8a2ee","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewModel.js.map","hasSourceURL":false,"isModule":false,"length":4109,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1178","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js","startLine":0,"startColumn":0,"endLine":197,"endColumn":3,"executionContextId":1,"hash":"16199d7076b11f8a3761b67e4a66247a2704dafb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lineDecorations.js.map","hasSourceURL":false,"isModule":false,"length":8696,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1179","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js","startLine":0,"startColumn":0,"endLine":793,"endColumn":3,"executionContextId":1,"hash":"327db07319d187463693ecd69a459aec6ff2165a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewLineRenderer.js.map","hasSourceURL":false,"isModule":false,"length":40343,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1180","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js","startLine":0,"startColumn":0,"endLine":147,"endColumn":3,"executionContextId":1,"hash":"0f1f997311aed4d967324b7e224db314694f4b0d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inlineDiffMargin.js.map","hasSourceURL":false,"isModule":false,"length":8142,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1181","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js","startLine":0,"startColumn":0,"endLine":88,"endColumn":3,"executionContextId":1,"hash":"08a8cb561aea6db746c62862cc20d2b12f201dc5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"elementSizeObserver.js.map","hasSourceURL":false,"isModule":false,"length":3879,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1182","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js","startLine":0,"startColumn":0,"endLine":396,"endColumn":3,"executionContextId":1,"hash":"2281b3370f4039190f81dd9bb541873a43db0d21","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewImpl.js.map","hasSourceURL":false,"isModule":false,"length":23358,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1183","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js","startLine":0,"startColumn":0,"endLine":129,"endColumn":3,"executionContextId":1,"hash":"27d11d7591444dc1706bdb259e7dd0f6156f0663","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewOutgoingEvents.js.map","hasSourceURL":false,"isModule":false,"length":4804,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1184","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js","startLine":0,"startColumn":0,"endLine":889,"endColumn":3,"executionContextId":1,"hash":"0d7f5e3c3dbb9a142722fea54a1f80777905e1de","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursor.js.map","hasSourceURL":false,"isModule":false,"length":46053,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102477,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1185","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js","startLine":0,"startColumn":0,"endLine":654,"endColumn":3,"executionContextId":1,"hash":"327dd14986aa711c11fd8e64c7ad85621b4243b4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewModelImpl.js.map","hasSourceURL":false,"isModule":false,"length":36961,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102478,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1186","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorAction.js","startLine":0,"startColumn":0,"endLine":31,"endColumn":3,"executionContextId":1,"hash":"1b8ae9bca6e5cb5662b3d6e198c6634e6f32fddd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorAction.js.map","hasSourceURL":false,"isModule":false,"length":1387,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102478,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1187","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js","startLine":0,"startColumn":0,"endLine":253,"endColumn":3,"executionContextId":1,"hash":"0c2c027b6b11de460deb8a1b6018727a0258fb26","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"domLineBreaksComputer.js.map","hasSourceURL":false,"isModule":false,"length":12237,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102478,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1188","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","startLine":0,"startColumn":0,"endLine":411,"endColumn":3,"executionContextId":1,"hash":"1abda76d1e6deebe1b5c83b9be21a7b96d20185f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"monospaceLineBreaksComputer.js.map","hasSourceURL":false,"isModule":false,"length":22348,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102478,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1189","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js","startLine":0,"startColumn":0,"endLine":92,"endColumn":3,"executionContextId":1,"hash":"28a3793b85cc331919bcf7bf7ebc76c9667b7ebe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replaceCommand.js.map","hasSourceURL":false,"isModule":false,"length":4954,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102478,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1190","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js","startLine":0,"startColumn":0,"endLine":590,"endColumn":3,"executionContextId":1,"hash":"154c3ef17859527d40a651c4ae99cfc1616f17d1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorWordOperations.js.map","hasSourceURL":false,"isModule":false,"length":31620,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1191","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js","startLine":0,"startColumn":0,"endLine":193,"endColumn":3,"executionContextId":1,"hash":"340a86d5724724706876dea2054b3dee65d49c50","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorMoveOperations.js.map","hasSourceURL":false,"isModule":false,"length":11389,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1192","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js","startLine":0,"startColumn":0,"endLine":569,"endColumn":3,"executionContextId":1,"hash":"3497c41ea935116648a60e71780d642c7a906a07","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textAreaInput.js.map","hasSourceURL":false,"isModule":false,"length":29648,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1193","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":3,"executionContextId":1,"hash":"0e205f1138f95c0f65f50033462dda5e758fdfe5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorColumnSelection.js.map","hasSourceURL":false,"isModule":false,"length":6472,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1194","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js","startLine":0,"startColumn":0,"endLine":180,"endColumn":3,"executionContextId":1,"hash":"27a5966d582902ce076d496f70c4df70080b06c8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorDeleteOperations.js.map","hasSourceURL":false,"isModule":false,"length":10249,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1195","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js","startLine":0,"startColumn":0,"endLine":811,"endColumn":3,"executionContextId":1,"hash":"362047e4235669d24e280a6c4e9c621a4697f007","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorTypeOperations.js.map","hasSourceURL":false,"isModule":false,"length":45223,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1196","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js","startLine":0,"startColumn":0,"endLine":666,"endColumn":3,"executionContextId":1,"hash":"2358572a1f3b9d261c009e71c28d26a6310aa410","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorMoveCommands.js.map","hasSourceURL":false,"isModule":false,"length":38378,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1197","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js","startLine":0,"startColumn":0,"endLine":96,"endColumn":3,"executionContextId":1,"hash":"1f192c159379f3fb4456ccd218f28b8935c39946","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codelens.js.map","hasSourceURL":false,"isModule":false,"length":4657,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1198","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js","startLine":0,"startColumn":0,"endLine":464,"endColumn":3,"executionContextId":1,"hash":"253d73d57c88d41b24d92e5882134e1023c8e279","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorCommon.js.map","hasSourceURL":false,"isModule":false,"length":23201,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1199","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js","startLine":0,"startColumn":0,"endLine":344,"endColumn":3,"executionContextId":1,"hash":"3dfdbbab26d39a5b1f9a95d17214d93314aa040e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionCommands.js.map","hasSourceURL":false,"isModule":false,"length":19981,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1200","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js","startLine":0,"startColumn":0,"endLine":51,"endColumn":3,"executionContextId":1,"hash":"2a21b663613343712da523bb87391bec72a10123","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"moveCaretCommand.js.map","hasSourceURL":false,"isModule":false,"length":2868,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1201","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js","startLine":0,"startColumn":0,"endLine":266,"endColumn":3,"executionContextId":1,"hash":"24bdcea12ea622d87b85158db6ea199945f9e194","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codelensWidget.js.map","hasSourceURL":false,"isModule":false,"length":11969,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102479,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.94","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.275487,"wallTime":1588425102.153944,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1202","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"3708cb77021440ae554e06033607d68263a2a41f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeLensCache.js.map","hasSourceURL":false,"isModule":false,"length":5895,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1203","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"3e83f813a0bccbca81a7e0903c51e95835c15ef0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"color.js.map","hasSourceURL":false,"isModule":false,"length":3896,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1204","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js","startLine":0,"startColumn":0,"endLine":325,"endColumn":3,"executionContextId":1,"hash":"217107f36e7293103563eeb38ddfd120164488aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lineCommentCommand.js.map","hasSourceURL":false,"isModule":false,"length":17606,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1205","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js","startLine":0,"startColumn":0,"endLine":148,"endColumn":3,"executionContextId":1,"hash":"1de725d84b9bd98e39433b5d2c9b6bba0739d727","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"blockCommentCommand.js.map","hasSourceURL":false,"isModule":false,"length":8868,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1206","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js","startLine":0,"startColumn":0,"endLine":169,"endColumn":3,"executionContextId":1,"hash":"2e2188699193c4a87b7dc22e3afeca0a5d0010c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findOptionsWidget.js.map","hasSourceURL":false,"isModule":false,"length":8730,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1207","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js","startLine":0,"startColumn":0,"endLine":223,"endColumn":3,"executionContextId":1,"hash":"382df214a7ff687e28bc3af8a30fb49c653ee2e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findState.js.map","hasSourceURL":false,"isModule":false,"length":10561,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1208","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js","startLine":0,"startColumn":0,"endLine":1124,"endColumn":3,"executionContextId":1,"hash":"2114c616477ddf8e30a43beeb61e5bbe1e127c82","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findWidget.js.map","hasSourceURL":false,"isModule":false,"length":61472,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.95","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.283482,"wallTime":1588425102.161939,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1209","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"228ddbeb51620c0553c0ddd4684617a62d8a196e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorZoom.js.map","hasSourceURL":false,"isModule":false,"length":1280,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1210","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js","startLine":0,"startColumn":0,"endLine":363,"endColumn":3,"executionContextId":1,"hash":"263aaddd951adb1d3a79e91a0d1f568e4f82d624","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"foldingModel.js.map","hasSourceURL":false,"isModule":false,"length":17783,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102480,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1211","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"367a987b1d9d9aae0acf7f2e695a57f17c6177c2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"foldingDecorations.js.map","hasSourceURL":false,"isModule":false,"length":3904,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1212","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js","startLine":0,"startColumn":0,"endLine":137,"endColumn":3,"executionContextId":1,"hash":"3c4bcd1106930a5c126e101b21dc545844045fa1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"hiddenRangeModel.js.map","hasSourceURL":false,"isModule":false,"length":6186,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1213","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js","startLine":0,"startColumn":0,"endLine":165,"endColumn":3,"executionContextId":1,"hash":"0ed28b457469e130303568256e6e0d1503125df4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indentRangeProvider.js.map","hasSourceURL":false,"isModule":false,"length":8238,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1214","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":3,"executionContextId":1,"hash":"2a00c273053267d33bfd8e5b70b09f1c67e27102","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"characterClassifier.js.map","hasSourceURL":false,"isModule":false,"length":2471,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1215","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js","startLine":0,"startColumn":0,"endLine":57,"endColumn":3,"executionContextId":1,"hash":"341be12b7e32cf9f1bf6c539b468820156f1779e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"intializingRangeProvider.js.map","hasSourceURL":false,"isModule":false,"length":2816,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1216","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js","startLine":0,"startColumn":0,"endLine":162,"endColumn":3,"executionContextId":1,"hash":"266b42af1591ab148242050408ea4ed5718c25a4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"syntaxRangeProvider.js.map","hasSourceURL":false,"isModule":false,"length":7189,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1217","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js","startLine":0,"startColumn":0,"endLine":291,"endColumn":3,"executionContextId":1,"hash":"20d00f6a7ae15e212272b8088ec85408254c4c17","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"format.js.map","hasSourceURL":false,"isModule":false,"length":16461,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1218","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js","startLine":0,"startColumn":0,"endLine":389,"endColumn":3,"executionContextId":1,"hash":"396915bb2e39314878604fbc5d9f003a3d1262f4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outlineModel.js.map","hasSourceURL":false,"isModule":false,"length":16532,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1219","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"0ce969f66202a02042940c6b1a99425716ae27b1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"formattingEdit.js.map","hasSourceURL":false,"isModule":false,"length":2667,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1220","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"1968479d73a2c842611ffdd27c01a66c6182346a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"goToSymbol.js.map","hasSourceURL":false,"isModule":false,"length":4922,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1221","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js","startLine":0,"startColumn":0,"endLine":240,"endColumn":3,"executionContextId":1,"hash":"1854afc89ef969095910beb35c629b6f5b6a7905","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"referencesModel.js.map","hasSourceURL":false,"isModule":false,"length":10352,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1222","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js","startLine":0,"startColumn":0,"endLine":306,"endColumn":3,"executionContextId":1,"hash":"13371ece095a7adb2f915d7a57f1dbf32b2d057d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gotoErrorWidget.js.map","hasSourceURL":false,"isModule":false,"length":17295,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.96","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/media/gotoErrorWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.300613,"wallTime":1588425102.179069,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1223","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js","startLine":0,"startColumn":0,"endLine":151,"endColumn":3,"executionContextId":1,"hash":"229adb6b5701ba5801f7ec34626b8ed40999c040","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"clickLinkGesture.js.map","hasSourceURL":false,"isModule":false,"length":8455,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1224","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js","startLine":0,"startColumn":0,"endLine":162,"endColumn":3,"executionContextId":1,"hash":"3a8bbb030b112ea86df99c4828c7edc113d91c3a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"messageController.js.map","hasSourceURL":false,"isModule":false,"length":8901,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.97","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.310178,"wallTime":1588425102.188634,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102481,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1225","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js","startLine":0,"startColumn":0,"endLine":174,"endColumn":3,"executionContextId":1,"hash":"3738be7a847602d625ae7eb8c9870f1c45686bc6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"symbolNavigation.js.map","hasSourceURL":false,"isModule":false,"length":9536,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102482,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1226","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":3,"executionContextId":1,"hash":"2b1ce0e47c7fd82360382bce84094e300a6fe992","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dragAndDropCommand.js.map","hasSourceURL":false,"isModule":false,"length":5078,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102483,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1227","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js","startLine":0,"startColumn":0,"endLine":341,"endColumn":3,"executionContextId":1,"hash":"00c40144168ca03115e315dfb9cd9b1058c02fb8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"referencesController.js.map","hasSourceURL":false,"isModule":false,"length":18636,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102483,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1228","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"2ff52501995a6543435619886c2e613d759223d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inPlaceReplaceCommand.js.map","hasSourceURL":false,"isModule":false,"length":1840,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102483,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1229","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js","startLine":0,"startColumn":0,"endLine":89,"endColumn":3,"executionContextId":1,"hash":"07b671543b7e50b910c818a70a33be877e4809d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"embeddedCodeEditorWidget.js.map","hasSourceURL":false,"isModule":false,"length":6502,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102483,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1230","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js","startLine":0,"startColumn":0,"endLine":223,"endColumn":3,"executionContextId":1,"hash":"218c1efd32d5afda0e828a9b4ed0bb4151587895","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"shiftCommand.js.map","hasSourceURL":false,"isModule":false,"length":13399,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1231","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js","startLine":0,"startColumn":0,"endLine":539,"endColumn":3,"executionContextId":1,"hash":"2ac6d31364bc54e146f5518e4890d1576dc9d767","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modesContentHover.js.map","hasSourceURL":false,"isModule":false,"length":32058,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1232","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"1019dd9357e9e5a77fae68e27f1b00a549704a99","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indentUtils.js.map","hasSourceURL":false,"isModule":false,"length":1543,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1233","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"1b0f904b2f1cf2e31e14e81f0932c4ab72a5cf3f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"trimTrailingWhitespaceCommand.js.map","hasSourceURL":false,"isModule":false,"length":4052,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1234","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js","startLine":0,"startColumn":0,"endLine":121,"endColumn":3,"executionContextId":1,"hash":"1ef7f2b282f4d82f6f9910bc35cc489c76d04bf3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"modesGlyphHover.js.map","hasSourceURL":false,"isModule":false,"length":5692,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1235","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"336c250b0e8cceca001f3bc9b04c5d9c608a46e3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"copyLinesCommand.js.map","hasSourceURL":false,"isModule":false,"length":3586,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1236","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js","startLine":0,"startColumn":0,"endLine":91,"endColumn":3,"executionContextId":1,"hash":"21c8d0435363261a80376cfc29004df741b43783","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sortLinesCommand.js.map","hasSourceURL":false,"isModule":false,"length":3899,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1237","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js","startLine":0,"startColumn":0,"endLine":298,"endColumn":3,"executionContextId":1,"hash":"11309b5487da88a74ac0ce8a23446bfb3b9428b1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"moveLinesCommand.js.map","hasSourceURL":false,"isModule":false,"length":19218,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1238","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","startLine":0,"startColumn":0,"endLine":138,"endColumn":3,"executionContextId":1,"hash":"1e12e8df8908274e75a0ac0ecbc9afdc1ddbc2a8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"getLinks.js.map","hasSourceURL":false,"isModule":false,"length":5651,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1239","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js","startLine":0,"startColumn":0,"endLine":151,"endColumn":3,"executionContextId":1,"hash":"2e16c01d22aa8e690aec4c364c0163d53ce2ebde","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bracketSelections.js.map","hasSourceURL":false,"isModule":false,"length":7771,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1240","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js","startLine":0,"startColumn":0,"endLine":79,"endColumn":3,"executionContextId":1,"hash":"3ba9792c054f07897c2fad852869c3af6af3c335","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordSelections.js.map","hasSourceURL":false,"isModule":false,"length":3644,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1241","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"31d083c8113d9b9b2d08ba9c87061b0d70648a25","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"provideSignatureHelp.js.map","hasSourceURL":false,"isModule":false,"length":2136,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1242","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js","startLine":0,"startColumn":0,"endLine":320,"endColumn":3,"executionContextId":1,"hash":"29f6f463aa3254d77c7f69e11fea718f6a53e593","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"parameterHintsWidget.js.map","hasSourceURL":false,"isModule":false,"length":17552,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.98","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.321508,"wallTime":1588425102.199964,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1243","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js","startLine":0,"startColumn":0,"endLine":952,"endColumn":3,"executionContextId":1,"hash":"0cada15b318667ea6648027bb0e718a4754616bf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetParser.js.map","hasSourceURL":false,"isModule":false,"length":35516,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102484,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1244","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js","startLine":0,"startColumn":0,"endLine":526,"endColumn":3,"executionContextId":1,"hash":"18be96f4a03ea889470e8ad810ca1f94777b7b36","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestModel.js.map","hasSourceURL":false,"isModule":false,"length":25002,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102485,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1245","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js","startLine":0,"startColumn":0,"endLine":99,"endColumn":3,"executionContextId":1,"hash":"25aed7937654f35021c6a28021baea8405211850","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestAlternatives.js.map","hasSourceURL":false,"isModule":false,"length":4616,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102485,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1246","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"3304241241dc054047b8297b8fdd994a3533a027","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestCommitCharacters.js.map","hasSourceURL":false,"isModule":false,"length":2646,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102485,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1247","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js","startLine":0,"startColumn":0,"endLine":1065,"endColumn":3,"executionContextId":1,"hash":"247b21d6aa17c93279c9ee8345063a49507a75c1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestWidget.js.map","hasSourceURL":false,"isModule":false,"length":58040,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102485,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.99","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/media/suggest.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.328401,"wallTime":1588425102.206856,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102485,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.100","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/media/suggestStatusBar.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.328799,"wallTime":1588425102.207255,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102486,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1248","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js","startLine":0,"startColumn":0,"endLine":262,"endColumn":3,"executionContextId":1,"hash":"300e88e13a174fcd03c4d2b0592c2af86214d3ec","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"suggestMemory.js.map","hasSourceURL":false,"isModule":false,"length":11814,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102486,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1249","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":3,"executionContextId":1,"hash":"1360bb748929a1c302b02a53313a578e7399a539","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordContextKey.js.map","hasSourceURL":false,"isModule":false,"length":3966,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1250","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js","startLine":0,"startColumn":0,"endLine":175,"endColumn":3,"executionContextId":1,"hash":"1f01f7e19b0e41981878020630b59af4102e5ea9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"renameInputField.js.map","hasSourceURL":false,"isModule":false,"length":10437,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.101","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.331379,"wallTime":1588425102.209835,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1251","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js","startLine":0,"startColumn":0,"endLine":523,"endColumn":3,"executionContextId":1,"hash":"1c80c70d598bbae40b71d1f33d7cab556de1e52a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetSession.js.map","hasSourceURL":false,"isModule":false,"length":31433,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.102","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.333196,"wallTime":1588425102.21165,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1252","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js","startLine":0,"startColumn":0,"endLine":37,"endColumn":3,"executionContextId":1,"hash":"37338c7fa7a8054163b4da85123b68f846752193","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordCharacterClassifier.js.map","hasSourceURL":false,"isModule":false,"length":2071,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1253","url":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js","startLine":0,"startColumn":0,"endLine":419,"endColumn":3,"executionContextId":1,"hash":"01594ad48736d68b67cc98398bee37ad22f8ed85","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tokenClassificationRegistry.js.map","hasSourceURL":false,"isModule":false,"length":23432,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1254","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"2c3cba729dcd722347ca12420b483b9e73da8772","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editor.js.map","hasSourceURL":false,"isModule":false,"length":2069,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102487,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1255","url":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js","startLine":0,"startColumn":0,"endLine":26,"endColumn":3,"executionContextId":1,"hash":"36e5f077195a17246f4386a89f2e154615ab9a68","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonErrorMessages.js.map","hasSourceURL":false,"isModule":false,"length":1894,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1256","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js","startLine":0,"startColumn":0,"endLine":259,"endColumn":3,"executionContextId":1,"hash":"3e68f7b95c538bda7ab9df741faa0dd8222eec88","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugUtils.js.map","hasSourceURL":false,"isModule":false,"length":11442,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1257","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js","startLine":0,"startColumn":0,"endLine":188,"endColumn":3,"executionContextId":1,"hash":"2b927fc07652f3723a5cc7ecb877e4ec450f1203","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractDebugAdapter.js.map","hasSourceURL":false,"isModule":false,"length":7488,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1258","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js","startLine":0,"startColumn":0,"endLine":174,"endColumn":3,"executionContextId":1,"hash":"39d38d165640a9d2512eb9508f1542a25296686c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileLogService.js.map","hasSourceURL":false,"isModule":false,"length":8850,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1259","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js","startLine":0,"startColumn":0,"endLine":251,"endColumn":3,"executionContextId":1,"hash":"246687be3ed28dd06f0d9d870b14bf885b4cf808","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textEditor.js.map","hasSourceURL":false,"isModule":false,"length":14338,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1260","url":"file:///Users/roblou/code/vscode/out/vs/base/common/sequence.js","startLine":0,"startColumn":0,"endLine":22,"endColumn":3,"executionContextId":1,"hash":"3a22407b327abec739f0154141eb002665f8fbce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sequence.js.map","hasSourceURL":false,"isModule":false,"length":1095,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1261","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":3,"executionContextId":1,"hash":"1fab4b5c47c2f91071cd153ea0858694101090d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"semanticTokensDto.js.map","hasSourceURL":false,"isModule":false,"length":5470,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1262","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js","startLine":0,"startColumn":0,"endLine":57,"endColumn":3,"executionContextId":1,"hash":"0552526c9df6af822fdc034491b3cbd17fbf70fb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalDataBuffering.js.map","hasSourceURL":false,"isModule":false,"length":2265,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102488,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1263","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js","startLine":0,"startColumn":0,"endLine":113,"endColumn":3,"executionContextId":1,"hash":"0c0c1469771b4f1602c9bf04c93e7d4d0b353f38","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"openWith.js.map","hasSourceURL":false,"isModule":false,"length":6566,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"1ea547085560f4462911d5ce4dd6cdb42703af1b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customTextEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":4347,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1265","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js","startLine":0,"startColumn":0,"endLine":192,"endColumn":3,"executionContextId":1,"hash":"3aba61ba9f30f7bb5f7178d1ae39ec6f5699b0f2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentsView.js.map","hasSourceURL":false,"isModule":false,"length":13129,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.103","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/media/panel.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.348187,"wallTime":1588425102.226641,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1266","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"39f4568c3787029d5deb30be1441888e741656c7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariableShared.js.map","hasSourceURL":false,"isModule":false,"length":1225,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1267","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js","startLine":0,"startColumn":0,"endLine":192,"endColumn":3,"executionContextId":1,"hash":"2e0c531b5d55020046f7aff0b91c8c81622e68d0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentsTreeViewer.js.map","hasSourceURL":false,"isModule":false,"length":11441,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1268","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":3,"executionContextId":1,"hash":"0af17fe541735e7a7222ce092fa5315e2d1fd1c3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extHostTunnelService.js.map","hasSourceURL":false,"isModule":false,"length":3601,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js","startLine":0,"startColumn":0,"endLine":265,"endColumn":3,"executionContextId":1,"hash":"1a8fbea8383da9a31ea3aa3266750b284e1e6dc4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookTextModel.js.map","hasSourceURL":false,"isModule":false,"length":13467,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1270","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js","startLine":0,"startColumn":0,"endLine":1188,"endColumn":3,"executionContextId":1,"hash":"34698b9b1f60d50b5825c408400ad7734f98f635","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extHostTypeConverters.js.map","hasSourceURL":false,"isModule":false,"length":54577,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1271","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/composite.js","startLine":0,"startColumn":0,"endLine":227,"endColumn":3,"executionContextId":1,"hash":"263afcc73e8c4cfe3d3b327e0b462543329df231","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"composite.js.map","hasSourceURL":false,"isModule":false,"length":9662,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102489,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1272","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":3,"executionContextId":1,"hash":"1e10348b6db05fb119138acf5881361a688f2b76","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"treeDefaults.js.map","hasSourceURL":false,"isModule":false,"length":1228,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1273","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"04017e5d15a39d9d5be4ae616eb5c75312e9b42c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"panecomposite.js.map","hasSourceURL":false,"isModule":false,"length":4627,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1274","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js","startLine":0,"startColumn":0,"endLine":123,"endColumn":3,"executionContextId":1,"hash":"28f756669ed4f467434942be6b6d73ac5d57d3ca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"toolbar.js.map","hasSourceURL":false,"isModule":false,"length":6620,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.104","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.354875,"wallTime":1588425102.233329,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1275","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","startLine":0,"startColumn":0,"endLine":393,"endColumn":3,"executionContextId":1,"hash":"1202cf376b0533eb197bc4f8a2f1240f3d9407f0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"paneview.js.map","hasSourceURL":false,"isModule":false,"length":19577,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.105","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.356173,"wallTime":1588425102.234627,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1276","url":"file:///Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js","startLine":0,"startColumn":0,"endLine":58,"endColumn":3,"executionContextId":1,"hash":"32bfe0069b0820290284287d2d8f1aba55027d72","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"link.js.map","hasSourceURL":false,"isModule":false,"length":3189,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1277","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":3,"executionContextId":1,"hash":"1439617038d1501118d23fe5557c3ee160623b43","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"button.js.map","hasSourceURL":false,"isModule":false,"length":8692,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.106","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.35762,"wallTime":1588425102.236075,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1278","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js","startLine":0,"startColumn":0,"endLine":289,"endColumn":3,"executionContextId":1,"hash":"3cc917bf827e03a2563b4e5d1e4c706345085b49","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"progressIndicator.js.map","hasSourceURL":false,"isModule":false,"length":13808,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1279","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js","startLine":0,"startColumn":0,"endLine":170,"endColumn":3,"executionContextId":1,"hash":"02cd0bc915e82193199eb72f1ae7566e2c7a5da0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"progressbar.js.map","hasSourceURL":false,"isModule":false,"length":6709,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.107","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.359296,"wallTime":1588425102.23775,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","startLine":0,"startColumn":0,"endLine":467,"endColumn":3,"executionContextId":1,"hash":"1199e12fa097a6d803318bdabd3c46047be10216","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scrollableElement.js.map","hasSourceURL":false,"isModule":false,"length":23720,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102490,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.108","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/media/scrollbars.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.361149,"wallTime":1588425102.239603,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102491,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1281","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","startLine":0,"startColumn":0,"endLine":885,"endColumn":3,"executionContextId":1,"hash":"0969a16a4846c0024530f4643758da6122ac2de1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gridview.js.map","hasSourceURL":false,"isModule":false,"length":43564,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102491,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1282","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js","startLine":0,"startColumn":0,"endLine":1224,"endColumn":3,"executionContextId":1,"hash":"14336da456559e8c7177a74919587fc03d78076b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tabsTitleControl.js.map","hasSourceURL":false,"isModule":false,"length":73866,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102491,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.109","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/tabstitlecontrol.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.370857,"wallTime":1588425102.249311,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102491,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","startLine":0,"startColumn":0,"endLine":192,"endColumn":3,"executionContextId":1,"hash":"38790caa5f35a0c2657dbada713bd69562dcbd56","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorControl.js.map","hasSourceURL":false,"isModule":false,"length":11372,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1284","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js","startLine":0,"startColumn":0,"endLine":250,"endColumn":3,"executionContextId":1,"hash":"240aa8df50f907c9404a03459cf1a38949178687","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"noTabsTitleControl.js.map","hasSourceURL":false,"isModule":false,"length":12579,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.110","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/notabstitlecontrol.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.372719,"wallTime":1588425102.251173,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","startLine":0,"startColumn":0,"endLine":723,"endColumn":3,"executionContextId":1,"hash":"25951ca654d0332925cb46d4a2881c373c30a02d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"splitview.js.map","hasSourceURL":false,"isModule":false,"length":36482,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.111","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.374812,"wallTime":1588425102.253265,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1286","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js","startLine":0,"startColumn":0,"endLine":196,"endColumn":3,"executionContextId":1,"hash":"0f7565faa53d9e707ee70a182870bb2b454b2976","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sideBySideEditor.js.map","hasSourceURL":false,"isModule":false,"length":11583,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1287","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js","startLine":0,"startColumn":0,"endLine":265,"endColumn":3,"executionContextId":1,"hash":"0f97b9c147b9a58d6383cc01a9d841dd6a18674b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textDiffEditor.js.map","hasSourceURL":false,"isModule":false,"length":16156,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1288","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js","startLine":0,"startColumn":0,"endLine":1203,"endColumn":3,"executionContextId":1,"hash":"3308f2e41f5e81bb705704c54d162ae53cc226cb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorStatus.js.map","hasSourceURL":false,"isModule":false,"length":70215,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.112","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editorstatus.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.378205,"wallTime":1588425102.256659,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1289","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js","startLine":0,"startColumn":0,"endLine":188,"endColumn":3,"executionContextId":1,"hash":"1c53d6841510c0b370c6f6f2bcef0c46261bd1d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorAutoSave.js.map","hasSourceURL":false,"isModule":false,"length":11450,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1290","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"381759dd49a9f5686e85df7d88c8bf02522f9922","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"binaryDiffEditor.js.map","hasSourceURL":false,"isModule":false,"length":3240,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102492,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js","startLine":0,"startColumn":0,"endLine":1696,"endColumn":3,"executionContextId":1,"hash":"1fc4f03663301dc90e9fb7da5efbfdab139a9a3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorActions.js.map","hasSourceURL":false,"isModule":false,"length":96787,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1292","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":3,"executionContextId":1,"hash":"293aafdf042a1f6019a87095bd0d12a714d65855","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"widget.js.map","hasSourceURL":false,"isModule":false,"length":2748,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1293","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js","startLine":0,"startColumn":0,"endLine":239,"endColumn":3,"executionContextId":1,"hash":"296a4f4d7b3cddc87bbe4a781eaf1c3338343225","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":14641,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.113","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editorquickaccess.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.383234,"wallTime":1588425102.261688,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1294","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js","startLine":0,"startColumn":0,"endLine":114,"endColumn":3,"executionContextId":1,"hash":"37f454801ae0d13d0593d1d3507579d82ee8c69a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractCodeEditorService.js.map","hasSourceURL":false,"isModule":false,"length":4964,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1295","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js","startLine":0,"startColumn":0,"endLine":45,"endColumn":3,"executionContextId":1,"hash":"368537f5781df8774b5db264b4e13c621935a9ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":2205,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1296","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"3b2918e3010a21042aa9e8dfa2c280b25405acac","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textDiffEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":3205,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1297","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js","startLine":0,"startColumn":0,"endLine":174,"endColumn":3,"executionContextId":1,"hash":"2b7294cb0668a33e39ebd65c5cbe0275227b6acd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"checkbox.js.map","hasSourceURL":false,"isModule":false,"length":7737,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.114","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.385562,"wallTime":1588425102.264016,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1298","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js","startLine":0,"startColumn":0,"endLine":485,"endColumn":3,"executionContextId":1,"hash":"27d88a32513843702e4ad7d06589a7c600c62386","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingsEditorModel.js.map","hasSourceURL":false,"isModule":false,"length":24524,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1299","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js","startLine":0,"startColumn":0,"endLine":274,"endColumn":3,"executionContextId":1,"hash":"3629deaa6490bff8471f8e34a4af00c50a2a85ba","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languagesRegistry.js.map","hasSourceURL":false,"isModule":false,"length":12336,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1300","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js","startLine":0,"startColumn":0,"endLine":22,"endColumn":3,"executionContextId":1,"hash":"156d962e576f9ce74cea192a6587955e044d76bb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractMode.js.map","hasSourceURL":false,"isModule":false,"length":1004,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1301","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js","startLine":0,"startColumn":0,"endLine":201,"endColumn":3,"executionContextId":1,"hash":"17124f833c01c67c5c9595db6c3b9ab712f026f1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesValidation.js.map","hasSourceURL":false,"isModule":false,"length":10513,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1302","url":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":3,"executionContextId":1,"hash":"1d084ca834c2174f62314cc2bf1d68850b422e7d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"iconRegistry.js.map","hasSourceURL":false,"isModule":false,"length":5643,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1303","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js","startLine":0,"startColumn":0,"endLine":477,"endColumn":3,"executionContextId":1,"hash":"0b928c8c300d40b01e6b7d7a1e4cc82505e41c08","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"plistParser.js.map","hasSourceURL":false,"isModule":false,"length":16104,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1304","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js","startLine":0,"startColumn":0,"endLine":130,"endColumn":3,"executionContextId":1,"hash":"0108ae8f837503707ecf0289afde9f7802c03232","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textMateScopeMatcher.js.map","hasSourceURL":false,"isModule":false,"length":4801,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1305","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":3,"executionContextId":1,"hash":"3201013d9842e1576dff3c93c3b2566b52780e7e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"themeCompatibility.js.map","hasSourceURL":false,"isModule":false,"length":4311,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1306","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","startLine":0,"startColumn":0,"endLine":106,"endColumn":3,"executionContextId":1,"hash":"2e33bdab54696fa262a116b7ba7150eb00e45abf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"highlightedLabel.js.map","hasSourceURL":false,"isModule":false,"length":4648,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1307","url":"file:///Users/roblou/code/vscode/out/vs/base/common/navigator.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"2609efe57d86bd202268917d20bc1fa1419d25a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"navigator.js.map","hasSourceURL":false,"isModule":false,"length":1573,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1308","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js","startLine":0,"startColumn":0,"endLine":482,"endColumn":3,"executionContextId":1,"hash":"1261eb280126c11849f5290a18f619e24df5f79c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"inputBox.js.map","hasSourceURL":false,"isModule":false,"length":22232,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.115","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.397449,"wallTime":1588425102.2759,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1309","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js","startLine":0,"startColumn":0,"endLine":977,"endColumn":3,"executionContextId":1,"hash":"254d5f434d48d0987b8f6e3c934ead190647a964","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesRenderers.js.map","hasSourceURL":false,"isModule":false,"length":57627,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1310","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js","startLine":0,"startColumn":0,"endLine":719,"endColumn":3,"executionContextId":1,"hash":"2c54a2df43ef141e1e5ac11275b2a7aa74d05f14","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"preferencesWidgets.js.map","hasSourceURL":false,"isModule":false,"length":36718,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1311","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js","startLine":0,"startColumn":0,"endLine":237,"endColumn":3,"executionContextId":1,"hash":"23b0e7d8a67b80e90b7459595ac7796041265e50","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"settingsLayout.js.map","hasSourceURL":false,"isModule":false,"length":10027,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1312","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js","startLine":0,"startColumn":0,"endLine":1393,"endColumn":3,"executionContextId":1,"hash":"306db2839fcaf01f1a4a02d190d9bc2a6c6a382b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"settingsTree.js.map","hasSourceURL":false,"isModule":false,"length":80424,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1313","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js","startLine":0,"startColumn":0,"endLine":197,"endColumn":3,"executionContextId":1,"hash":"2f05d37e9145eb1e1b00d511a57b670606a129a7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"tocTree.js.map","hasSourceURL":false,"isModule":false,"length":10153,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1314","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js","startLine":0,"startColumn":0,"endLine":499,"endColumn":3,"executionContextId":1,"hash":"2c615e8b14b0288779ff1bb615c442ea607dcf99","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"settingsTreeModels.js.map","hasSourceURL":false,"isModule":false,"length":25138,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1315","url":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js","startLine":0,"startColumn":0,"endLine":92,"endColumn":3,"executionContextId":1,"hash":"0c630905973e6e076237b77e489272c675fc1c68","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"errorTelemetry.js.map","hasSourceURL":false,"isModule":false,"length":4109,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1316","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js","startLine":0,"startColumn":0,"endLine":452,"endColumn":3,"executionContextId":1,"hash":"17625d4328033892003ca121410aedb512cc3a8a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"settingsWidgets.js.map","hasSourceURL":false,"isModule":false,"length":31011,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.116","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.406665,"wallTime":1588425102.285117,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1317","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js","startLine":0,"startColumn":0,"endLine":1394,"endColumn":3,"executionContextId":1,"hash":"387976e411da07001791927a48c710e63b0a0c96","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInput.js.map","hasSourceURL":false,"isModule":false,"length":69376,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102494,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.117","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/media/quickInput.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.408852,"wallTime":1588425102.287304,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1318","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js","startLine":0,"startColumn":0,"endLine":170,"endColumn":3,"executionContextId":1,"hash":"381eff0636bba02f51b1fc27cd37ddab0bc388ee","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickAccess.js.map","hasSourceURL":false,"isModule":false,"length":11312,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1319","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"03a3e5e19f8d08e327acbc27c9c592b23040b7be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookProvider.js.map","hasSourceURL":false,"isModule":false,"length":1863,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1320","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js","startLine":0,"startColumn":0,"endLine":100,"endColumn":3,"executionContextId":1,"hash":"2e71277da164eb243ad71fa2a695aa310b51eca7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":5357,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1321","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js","startLine":0,"startColumn":0,"endLine":23,"endColumn":3,"executionContextId":1,"hash":"306af98221d7422473bc068fc601f9e80d9a6763","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookOutputRenderer.js.map","hasSourceURL":false,"isModule":false,"length":1220,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1322","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js","startLine":0,"startColumn":0,"endLine":36,"endColumn":3,"executionContextId":1,"hash":"2f8f6c7123ba6732768d793210f037fd5292819f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookRegistry.js.map","hasSourceURL":false,"isModule":false,"length":1824,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1323","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js","startLine":0,"startColumn":0,"endLine":277,"endColumn":3,"executionContextId":1,"hash":"0e3986b338abc22730671f62a92f645d5b9ecec1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findDecorations.js.map","hasSourceURL":false,"isModule":false,"length":15086,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1324","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","startLine":0,"startColumn":0,"endLine":145,"endColumn":3,"executionContextId":1,"hash":"31dcb9498b9e4c41476e7f631ec70a5a15ec176b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"prefixSumComputer.js.map","hasSourceURL":false,"isModule":false,"length":6014,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1325","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","startLine":0,"startColumn":0,"endLine":192,"endColumn":3,"executionContextId":1,"hash":"18aecb4394d508df3ab97aff0139a8aa66741a4f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"foldingModel.js.map","hasSourceURL":false,"isModule":false,"length":8975,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1326","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js","startLine":0,"startColumn":0,"endLine":78,"endColumn":3,"executionContextId":1,"hash":"03c9a0658ac282bf71a65b629f5444b00cbd3664","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mdRenderer.js.map","hasSourceURL":false,"isModule":false,"length":4665,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1327","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js","startLine":0,"startColumn":0,"endLine":336,"endColumn":3,"executionContextId":1,"hash":"0f9429b8a8603094683c98fe35a55fd623e88dbd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleFindReplaceWidget.js.map","hasSourceURL":false,"isModule":false,"length":20477,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.118","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.414534,"wallTime":1588425102.292986,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1328","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js","startLine":0,"startColumn":0,"endLine":228,"endColumn":3,"executionContextId":1,"hash":"33ffad1786144088216c577a241cceb2252ff6d7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pickerQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":12305,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1329","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js","startLine":0,"startColumn":0,"endLine":31,"endColumn":3,"executionContextId":1,"hash":"2ce4ead5856a87a01011b7646d54677c42df9992","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commandsQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":1919,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1330","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js","startLine":0,"startColumn":0,"endLine":232,"endColumn":3,"executionContextId":1,"hash":"393808980345c1ce04f16b242e05cfff54985170","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commandsQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":14849,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1331","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js","startLine":0,"startColumn":0,"endLine":188,"endColumn":3,"executionContextId":1,"hash":"16232c6b883e81ce53d7744131724f2470ecea9d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"binaryEditor.js.map","hasSourceURL":false,"isModule":false,"length":10735,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102495,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.119","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/binaryeditor.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.419935,"wallTime":1588425102.298387,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1332","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js","startLine":0,"startColumn":0,"endLine":83,"endColumn":3,"executionContextId":1,"hash":"06e0aa2f6bc528ac553157119cbc29a00d9d3f1f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerDecorationsProvider.js.map","hasSourceURL":false,"isModule":false,"length":4366,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1333","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js","startLine":0,"startColumn":0,"endLine":192,"endColumn":3,"executionContextId":1,"hash":"0bc8059e25ba4b4a15e69e42219835db04e68858","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replaceService.js.map","hasSourceURL":false,"isModule":false,"length":12175,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1334","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js","startLine":0,"startColumn":0,"endLine":90,"endColumn":3,"executionContextId":1,"hash":"266ed163a05d6bb6442074f2b6cf84407d3cd4a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"conflicts.js.map","hasSourceURL":false,"isModule":false,"length":4929,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1335","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js","startLine":0,"startColumn":0,"endLine":1028,"endColumn":3,"executionContextId":1,"hash":"1902133e4ec6d6c011a0bff111727a3c0da0d3d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"explorerViewer.js.map","hasSourceURL":false,"isModule":false,"length":58485,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1336","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js","startLine":0,"startColumn":0,"endLine":57,"endColumn":3,"executionContextId":1,"hash":"1df180260ea279167ad4d9772330f08b2424bb7b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replaceAllCommand.js.map","hasSourceURL":false,"isModule":false,"length":2837,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1337","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js","startLine":0,"startColumn":0,"endLine":560,"endColumn":3,"executionContextId":1,"hash":"02b3cbce4a1fface5ae48cff0bbce564226f4d25","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bulkEditTree.js.map","hasSourceURL":false,"isModule":false,"length":29239,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1338","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js","startLine":0,"startColumn":0,"endLine":173,"endColumn":3,"executionContextId":1,"hash":"04cff18e9a39d7082db7d63146405e9d08256c18","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replace.js.map","hasSourceURL":false,"isModule":false,"length":7917,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1339","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js","startLine":0,"startColumn":0,"endLine":240,"endColumn":3,"executionContextId":1,"hash":"308dbb937aedc2620ce2089dc3eda9c83668f267","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replacePattern.js.map","hasSourceURL":false,"isModule":false,"length":9855,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1340","url":"file:///Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js","startLine":0,"startColumn":0,"endLine":646,"endColumn":3,"executionContextId":1,"hash":"096b4f1eab110035355d57af336089307e6d0e4f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fuzzyScorer.js.map","hasSourceURL":false,"isModule":false,"length":30346,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1341","url":"file:///Users/roblou/code/vscode/out/vs/base/common/comparers.js","startLine":0,"startColumn":0,"endLine":148,"endColumn":3,"executionContextId":1,"hash":"217fe58d4f66eda43ffae6cd84ee5f2c3cc3d20f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"comparers.js.map","hasSourceURL":false,"isModule":false,"length":6688,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1342","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js","startLine":0,"startColumn":0,"endLine":142,"endColumn":3,"executionContextId":1,"hash":"103dc88b522fa01531d65f0a9e662b215ec086ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorNavigationQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":7492,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1343","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":3,"executionContextId":1,"hash":"0a13ca811e23a66671252e1467658ca80e6a0f94","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cacheState.js.map","hasSourceURL":false,"isModule":false,"length":4193,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1344","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js","startLine":0,"startColumn":0,"endLine":410,"endColumn":3,"executionContextId":1,"hash":"148032bd99df37fd7719c497c421ec4d54f9fa14","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"gotoSymbolQuickAccess.js.map","hasSourceURL":false,"isModule":false,"length":23701,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1345","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js","startLine":0,"startColumn":0,"endLine":206,"endColumn":3,"executionContextId":1,"hash":"30f8c9ca2d6ca67f3ea71f3a60b800e3649cd14e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"iconLabel.js.map","hasSourceURL":false,"isModule":false,"length":10578,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102496,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.120","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconlabel.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.43012,"wallTime":1588425102.308572,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1346","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"3960502a080e5bbb4c30592c405ecf01789aa8bd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"util.js.map","hasSourceURL":false,"isModule":false,"length":2455,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1347","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"1b42124502f239ae0449219c5bca450c43c3571b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"countBadge.js.map","hasSourceURL":false,"isModule":false,"length":3132,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.121","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.431085,"wallTime":1588425102.309537,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1348","url":"file:///Users/roblou/code/vscode/out/vs/base/common/resourceTree.js","startLine":0,"startColumn":0,"endLine":141,"endColumn":3,"executionContextId":1,"hash":"0cf933532839c31f11588ff56a7cf9f92d3f5b22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"resourceTree.js.map","hasSourceURL":false,"isModule":false,"length":5658,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1349","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js","startLine":0,"startColumn":0,"endLine":395,"endColumn":3,"executionContextId":1,"hash":"0ddc508c7ce389320e4111fd5f9d866f08810c81","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"zoneWidget.js.map","hasSourceURL":false,"isModule":false,"length":17070,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.122","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.433007,"wallTime":1588425102.311459,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1350","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js","startLine":0,"startColumn":0,"endLine":189,"endColumn":3,"executionContextId":1,"hash":"3cea20a879003217338c9262c952be4c41375ab6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"baseDebugView.js.map","hasSourceURL":false,"isModule":false,"length":10769,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1351","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js","startLine":0,"startColumn":0,"endLine":1007,"endColumn":3,"executionContextId":1,"hash":"020870eb8a3ccded3250100e03ce860d276f2489","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugModel.js.map","hasSourceURL":false,"isModule":false,"length":46400,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1352","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js","startLine":0,"startColumn":0,"endLine":88,"endColumn":3,"executionContextId":1,"hash":"342dea9608c5bed942d362b532ff6d4e81975b06","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugViewModel.js.map","hasSourceURL":false,"isModule":false,"length":4589,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1353","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js","startLine":0,"startColumn":0,"endLine":667,"endColumn":3,"executionContextId":1,"hash":"28f37deb2d11eb761bfc577208587b494bc8b75a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugConfigurationManager.js.map","hasSourceURL":false,"isModule":false,"length":37823,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1354","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js","startLine":0,"startColumn":0,"endLine":180,"endColumn":3,"executionContextId":1,"hash":"163dd54537fa7dd23c175824a95e6db1814f5962","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugTaskRunner.js.map","hasSourceURL":false,"isModule":false,"length":11575,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1355","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js","startLine":0,"startColumn":0,"endLine":130,"endColumn":3,"executionContextId":1,"hash":"2a96cf4409a71ce2799f3fb89081437e4fc6273a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugSource.js.map","hasSourceURL":false,"isModule":false,"length":5773,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1356","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js","startLine":0,"startColumn":0,"endLine":901,"endColumn":3,"executionContextId":1,"hash":"149596a05603cc1e281f88b333a621e06633bff0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugSession.js.map","hasSourceURL":false,"isModule":false,"length":47563,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1357","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js","startLine":0,"startColumn":0,"endLine":247,"endColumn":3,"executionContextId":1,"hash":"23e40a029d012e0e26b0ae8d8350711a2ea25008","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dropdown.js.map","hasSourceURL":false,"isModule":false,"length":10443,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.123","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.44262,"wallTime":1588425102.321071,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1358","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"25ea495310a42bf41e930813a92f720c78bee417","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersFilterOptions.js.map","hasSourceURL":false,"isModule":false,"length":3026,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1359","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js","startLine":0,"startColumn":0,"endLine":105,"endColumn":3,"executionContextId":1,"hash":"0fc88ce748b0fefe02c7a1a10a782e804df01784","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rangeDecorations.js.map","hasSourceURL":false,"isModule":false,"length":5904,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1360","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js","startLine":0,"startColumn":0,"endLine":712,"endColumn":3,"executionContextId":1,"hash":"00e0fa5d38ef409d14dddde414367113332f2af5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markersTreeViewer.js.map","hasSourceURL":false,"isModule":false,"length":39978,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1361","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js","startLine":0,"startColumn":0,"endLine":286,"endColumn":3,"executionContextId":1,"hash":"36dc50400c8fe13642c538b58200e0d1704e6ada","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"replaceInput.js.map","hasSourceURL":false,"isModule":false,"length":15211,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.124","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.445387,"wallTime":1588425102.323838,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1362","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js","startLine":0,"startColumn":0,"endLine":298,"endColumn":3,"executionContextId":1,"hash":"20b456ac7a20aa7a60018ff2a1fe906845948639","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugANSIHandling.js.map","hasSourceURL":false,"isModule":false,"length":14301,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1363","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js","startLine":0,"startColumn":0,"endLine":310,"endColumn":3,"executionContextId":1,"hash":"0fcccf1871c7417c3c2a4d6b3f7e554c6c9f3abb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findInput.js.map","hasSourceURL":false,"isModule":false,"length":16752,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1364","url":"file:///Users/roblou/code/vscode/out/vs/base/common/lazy.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"2332f48a4998f3305032274971e119df75065039","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lazy.js.map","hasSourceURL":false,"isModule":false,"length":2048,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1365","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js","startLine":0,"startColumn":0,"endLine":55,"endColumn":3,"executionContextId":1,"hash":"26a3f7fa4ad3066e161e7d9366406dc739435927","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentMenus.js.map","hasSourceURL":false,"isModule":false,"length":3294,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1366","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"0537e72529298e940cca519a2178a4c05a5a17b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentGlyphWidget.js.map","hasSourceURL":false,"isModule":false,"length":3377,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1367","url":"file:///Users/roblou/code/vscode/out/vs/base/common/paging.js","startLine":0,"startColumn":0,"endLine":152,"endColumn":3,"executionContextId":1,"hash":"3194988f2fe0d671203f06ad41ebb8957bd4cce9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"paging.js.map","hasSourceURL":false,"isModule":false,"length":6244,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1368","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js","startLine":0,"startColumn":0,"endLine":754,"endColumn":3,"executionContextId":1,"hash":"35af341c42e63156340d9bfaae7d773c0dbeed50","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentThreadWidget.js.map","hasSourceURL":false,"isModule":false,"length":45612,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1369","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js","startLine":0,"startColumn":0,"endLine":91,"endColumn":3,"executionContextId":1,"hash":"0ba70fc3637530220f8ba0414766f50a21789e9c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleCommentEditor.js.map","hasSourceURL":false,"isModule":false,"length":6466,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1370","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js","startLine":0,"startColumn":0,"endLine":324,"endColumn":3,"executionContextId":1,"hash":"3774c20c46187903018f3c826bcacfc15263ed0f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsWidgets.js.map","hasSourceURL":false,"isModule":false,"length":16757,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.125","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.461552,"wallTime":1588425102.340003,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1371","url":"file:///Users/roblou/code/vscode/out/vs/base/common/cache.js","startLine":0,"startColumn":0,"endLine":33,"endColumn":3,"executionContextId":1,"hash":"21481ed7054899291cfe44ea6eee3e417048dae1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cache.js.map","hasSourceURL":false,"isModule":false,"length":1305,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1372","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js","startLine":0,"startColumn":0,"endLine":283,"endColumn":3,"executionContextId":1,"hash":"36fd281f1ca37fe65ae4a7a4292985a77aebbae6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsViewer.js.map","hasSourceURL":false,"isModule":false,"length":16285,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1373","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"23e0b8188f84a85c2c259034572942b65755bf76","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markdownDocumentRenderer.js.map","hasSourceURL":false,"isModule":false,"length":2148,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1374","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"13162922804a790848e718145bb2eb3a1ef2bb68","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"update.js.map","hasSourceURL":false,"isModule":false,"length":840,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1375","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js","startLine":0,"startColumn":0,"endLine":107,"endColumn":3,"executionContextId":1,"hash":"18b94c7a72330a6b6077982ec47b9be02dec9a8e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"exeBasedRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":7770,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1376","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js","startLine":0,"startColumn":0,"endLine":113,"endColumn":3,"executionContextId":1,"hash":"1cb1a97747af827168affa709d9f10530bc511ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dynamicWorkspaceRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":8480,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1377","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":3,"executionContextId":1,"hash":"0d6daa33262c724640fa3f984d609b7e78a4b31d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"experimentalRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":4675,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1378","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js","startLine":0,"startColumn":0,"endLine":228,"endColumn":3,"executionContextId":1,"hash":"2c0e9f0479fd986245b42a443e209ca07a1681f9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"workspaceRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":15850,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js","startLine":0,"startColumn":0,"endLine":259,"endColumn":3,"executionContextId":1,"hash":"2e8bf20d32aff1d03c56b1db35f9d83e228540f1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"fileBasedRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":17677,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1380","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"1a37acc111cffbdc0fb9b6b39e718be448b47c96","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keymapRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":3808,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1381","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"2c2377c2a5207d3531424bc055792380410c3e5d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"customEditorModelManager.js.map","hasSourceURL":false,"isModule":false,"length":2593,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1382","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js","startLine":0,"startColumn":0,"endLine":75,"endColumn":3,"executionContextId":1,"hash":"27fd516b57e72a276729ce31b17793337f77e1c0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contributedCustomEditors.js.map","hasSourceURL":false,"isModule":false,"length":4061,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1383","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js","startLine":0,"startColumn":0,"endLine":126,"endColumn":3,"executionContextId":1,"hash":"11fc01ed091e4a244634fc4822ab23f22fa39350","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configBasedRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":8342,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1384","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":3,"executionContextId":1,"hash":"0bf334269daa13f22c7458917779e4ec6da6a978","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionsList.js.map","hasSourceURL":false,"isModule":false,"length":13260,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.126","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extension.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.475652,"wallTime":1588425102.354102,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1385","url":"file:///Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js","startLine":0,"startColumn":0,"endLine":64,"endColumn":3,"executionContextId":1,"hash":"119d84017876e55d57d414716e1bccf3466b2f15","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"severityIcon.js.map","hasSourceURL":false,"isModule":false,"length":3185,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1386","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"148ad98b29927b5b0b942bc110545f5370854754","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outputLinkProvider.js.map","hasSourceURL":false,"isModule":false,"length":5028,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1387","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js","startLine":0,"startColumn":0,"endLine":391,"endColumn":3,"executionContextId":1,"hash":"3d87f41e97e2f02768360889018b7af1181a1a07","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalTab.js.map","hasSourceURL":false,"isModule":false,"length":20642,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1388","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js","startLine":0,"startColumn":0,"endLine":1316,"endColumn":3,"executionContextId":1,"hash":"027de6ec9515b33637de50e76e09d7d768f1f3dc","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalInstance.js.map","hasSourceURL":false,"isModule":false,"length":77841,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1389","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js","startLine":0,"startColumn":0,"endLine":300,"endColumn":3,"executionContextId":1,"hash":"072de5400d7b79c27312224d53689669309bcb8b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalConfigHelper.js.map","hasSourceURL":false,"isModule":false,"length":19299,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1390","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js","startLine":0,"startColumn":0,"endLine":278,"endColumn":3,"executionContextId":1,"hash":"2047d7138ab53dd76b8b243733a69dc35662f443","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"jsonSchemaCommon.js.map","hasSourceURL":false,"isModule":false,"length":14640,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1391","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js","startLine":0,"startColumn":0,"endLine":12,"endColumn":3,"executionContextId":1,"hash":"1888a5d028d9f8bc81056d842b50b8d44fe985c1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationResolverUtils.js.map","hasSourceURL":false,"isModule":false,"length":763,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1392","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js","startLine":0,"startColumn":0,"endLine":149,"endColumn":3,"executionContextId":1,"hash":"17e15e052acb615310a6d16e3f4a958a21caf94e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"configurationResolverSchema.js.map","hasSourceURL":false,"isModule":false,"length":8637,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102500,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1393","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js","startLine":0,"startColumn":0,"endLine":134,"endColumn":3,"executionContextId":1,"hash":"38603d8ba8ad0092224a959c4cca6de169a96c7e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariableCollection.js.map","hasSourceURL":false,"isModule":false,"length":6429,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1394","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js","startLine":0,"startColumn":0,"endLine":182,"endColumn":3,"executionContextId":1,"hash":"02669cad58e0ff6a3f001dc924a951dd7da68fef","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"formattedTextRenderer.js.map","hasSourceURL":false,"isModule":false,"length":6874,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1395","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js","startLine":0,"startColumn":0,"endLine":238,"endColumn":3,"executionContextId":1,"hash":"2ca4060d2900d7d94652074e9a3bb0ce44e8ae40","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"simpleFindWidget.js.map","hasSourceURL":false,"isModule":false,"length":13673,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.127","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.511279,"wallTime":1588425102.389728,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1396","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js","startLine":0,"startColumn":0,"endLine":167,"endColumn":3,"executionContextId":1,"hash":"19fee86980dc697b667aad6a7ec4fedd03fff08e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeAction.js.map","hasSourceURL":false,"isModule":false,"length":8753,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1397","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js","startLine":0,"startColumn":0,"endLine":131,"endColumn":3,"executionContextId":1,"hash":"2d2d25a41aa2dd294fe11fd7abe906926090eddb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"types.js.map","hasSourceURL":false,"isModule":false,"length":5894,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1398","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js","startLine":0,"startColumn":0,"endLine":103,"endColumn":3,"executionContextId":1,"hash":"004c46eb9bbd77b001570da327db44f853ede3e3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"emmetActions.js.map","hasSourceURL":false,"isModule":false,"length":5547,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1399","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js","startLine":0,"startColumn":0,"endLine":305,"endColumn":3,"executionContextId":1,"hash":"262b1c67413f723f3fba7c280960f9a32aee264e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"snippetVariables.js.map","hasSourceURL":false,"isModule":false,"length":15438,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1400","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js","startLine":0,"startColumn":0,"endLine":294,"endColumn":3,"executionContextId":1,"hash":"3dd2566b670d3fe40dc85c9732da2a0a795ec9fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"releaseNotesEditor.js.map","hasSourceURL":false,"isModule":false,"length":13542,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1401","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js","startLine":0,"startColumn":0,"endLine":18,"endColumn":3,"executionContextId":1,"hash":"1583dc646df20da65b30405a3200d9452e2d3ee8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"showExtensionQuery.js.map","hasSourceURL":false,"isModule":false,"length":1087,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1402","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"3dc818076eb0ec676265db4850f31fbf0f7ad8e5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"vs_code_welcome_page.js.map","hasSourceURL":false,"isModule":false,"length":7955,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1403","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js","startLine":0,"startColumn":0,"endLine":127,"endColumn":3,"executionContextId":1,"hash":"3431e71f03f9f45a4d2f32f30d4247c8455c8f2a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"callHierarchyTree.js.map","hasSourceURL":false,"isModule":false,"length":5559,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1404","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js","startLine":0,"startColumn":0,"endLine":356,"endColumn":3,"executionContextId":1,"hash":"3cd3f908281dd60b175f6b8051369aff5de9dd64","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"feedback.js.map","hasSourceURL":false,"isModule":false,"length":22499,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.128","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/media/feedback.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.549771,"wallTime":1588425102.428218,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102501,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1405","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js","startLine":0,"startColumn":0,"endLine":295,"endColumn":3,"executionContextId":1,"hash":"21092d524c187a935e17ee3479afaad579454e22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncAccount.js.map","hasSourceURL":false,"isModule":false,"length":18624,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1406","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js","startLine":0,"startColumn":0,"endLine":640,"endColumn":3,"executionContextId":1,"hash":"2f3bcfb04d4f0eb74f04952153742ded54517d2c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"outlineTree.js.map","hasSourceURL":false,"isModule":false,"length":41600,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.129","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/media/outlineTree.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.552585,"wallTime":1588425102.431032,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.130","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/media/symbol-icons.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.553013,"wallTime":1588425102.43146,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1407","url":"file:///Users/roblou/code/vscode/out/vs/base/common/marked/marked.js","startLine":0,"startColumn":0,"endLine":1715,"endColumn":3,"executionContextId":1,"hash":"29371e5f69f101781d78467e37baab1d036a5bc6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":42899,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1408","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"1f6364b987f6037b41f6561d678b7a0e51bfb4d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"userDataSyncTrigger.js.map","hasSourceURL":false,"isModule":false,"length":4453,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1409","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js","startLine":0,"startColumn":0,"endLine":194,"endColumn":3,"executionContextId":1,"hash":"0961568b59420ebf302f87ab6f97d6ed1f927d1b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"vs_code_editor_walkthrough.js.map","hasSourceURL":false,"isModule":false,"length":11771,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102502,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1410","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":3,"executionContextId":1,"hash":"372be9b4846ad7d527f47d4c9570a2fc573ee144","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"TMScopeRegistry.js.map","hasSourceURL":false,"isModule":false,"length":1866,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102504,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1411","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"18f7af0f0ab7047a1dba8e773031155d80b2f868","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcherService.js.map","hasSourceURL":false,"isModule":false,"length":4321,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102504,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1412","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js","startLine":0,"startColumn":0,"endLine":260,"endColumn":3,"executionContextId":1,"hash":"24f01d97874f860126641f0402071e8528022496","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsList.js.map","hasSourceURL":false,"isModule":false,"length":14481,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.131","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsList.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.561491,"wallTime":1588425102.439938,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1413","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"01a50c511e1cc7ab67453d5f348fd288423da5ad","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcherService.js.map","hasSourceURL":false,"isModule":false,"length":4276,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1414","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js","startLine":0,"startColumn":0,"endLine":56,"endColumn":3,"executionContextId":1,"hash":"20c6f2da90f1bc154ef8572fb6022f8c3584c107","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcherService.js.map","hasSourceURL":false,"isModule":false,"length":2683,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1415","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"06cb233548dab5636a8171ca6d6900a5736dceb1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcher.js.map","hasSourceURL":false,"isModule":false,"length":4169,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1416","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js","startLine":0,"startColumn":0,"endLine":104,"endColumn":3,"executionContextId":1,"hash":"3cb95b1c7a2553db276892aeaf6c63bc14fc512a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcherService.js.map","hasSourceURL":false,"isModule":false,"length":5087,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1417","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"0ac7d4456d007e8931482b8f7ed51d73684290f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"ipc.electron.js.map","hasSourceURL":false,"isModule":false,"length":1110,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1418","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js","startLine":0,"startColumn":0,"endLine":170,"endColumn":3,"executionContextId":1,"hash":"164dfa2019af099355da2b40ab554ea836765114","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsActions.js.map","hasSourceURL":false,"isModule":false,"length":10276,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1419","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":3,"executionContextId":1,"hash":"38b7a90d328e817949c3309b449357a336db1318","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"graph.js.map","hasSourceURL":false,"isModule":false,"length":2734,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1420","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js","startLine":0,"startColumn":0,"endLine":128,"endColumn":3,"executionContextId":1,"hash":"0f4f2efc69c1e92e0f57c32f5e3db0122f856195","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"charWidthReader.js.map","hasSourceURL":false,"isModule":false,"length":6295,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1421","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","startLine":0,"startColumn":0,"endLine":1489,"endColumn":3,"executionContextId":1,"hash":"1584c013998554a440b451a708a865ac7a5b3363","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pieceTreeBase.js.map","hasSourceURL":false,"isModule":false,"length":71207,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1422","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js","startLine":0,"startColumn":0,"endLine":72,"endColumn":3,"executionContextId":1,"hash":"2ab3e3e5a3d6aa1724c4029c25fd987562fef7ff","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textFileSaveParticipant.js.map","hasSourceURL":false,"isModule":false,"length":4256,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1423","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","startLine":0,"startColumn":0,"endLine":448,"endColumn":3,"executionContextId":1,"hash":"1659ac415ad2f90c2f62dd3da7b0939441b77830","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pieceTreeTextBuffer.js.map","hasSourceURL":false,"isModule":false,"length":21740,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1424","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"3cf0aa46374d84b8187141a83b242f6637615425","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"proxyIdentifier.js.map","hasSourceURL":false,"isModule":false,"length":1907,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1425","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js","startLine":0,"startColumn":0,"endLine":143,"endColumn":3,"executionContextId":1,"hash":"2bfda31a2ac6aedf7e9d686c5aead22450b932b4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selectBoxNative.js.map","hasSourceURL":false,"isModule":false,"length":6572,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1426","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js","startLine":0,"startColumn":0,"endLine":74,"endColumn":3,"executionContextId":1,"hash":"2d4345217b8e7dde73bb3f557a0eb1e409dd28b8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lazyPromise.js.map","hasSourceURL":false,"isModule":false,"length":2679,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1427","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js","startLine":0,"startColumn":0,"endLine":829,"endColumn":3,"executionContextId":1,"hash":"3ac3046587e75f625743dc86169f6c3978754d21","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selectBoxCustom.js.map","hasSourceURL":false,"isModule":false,"length":48711,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.132","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.584316,"wallTime":1588425102.462762,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1428","url":"file:///Users/roblou/code/vscode/out/vs/base/common/processes.js","startLine":0,"startColumn":0,"endLine":49,"endColumn":3,"executionContextId":1,"hash":"23ad58a2a16382d6132e380154fa6a514a82778d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"processes.js.map","hasSourceURL":false,"isModule":false,"length":2301,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1429","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js","startLine":0,"startColumn":0,"endLine":100,"endColumn":3,"executionContextId":1,"hash":"1d78e144a31033164f3535fa0fd050338003d2c1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textToHtmlTokenizer.js.map","hasSourceURL":false,"isModule":false,"length":5113,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1430","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","startLine":0,"startColumn":0,"endLine":253,"endColumn":3,"executionContextId":1,"hash":"158a76290c5ba399705547169ecea8b127522664","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markdownCell.js.map","hasSourceURL":false,"isModule":false,"length":14353,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1431","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js","startLine":0,"startColumn":0,"endLine":44,"endColumn":3,"executionContextId":1,"hash":"36e16e4741ed53dc7a1311b439d4036c1340ff3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cellMenus.js.map","hasSourceURL":false,"isModule":false,"length":2688,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1432","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js","startLine":0,"startColumn":0,"endLine":230,"endColumn":3,"executionContextId":1,"hash":"0b3eee62494648a6735909f44e3c761107792db0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeCellViewModel.js.map","hasSourceURL":false,"isModule":false,"length":12398,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","startLine":0,"startColumn":0,"endLine":415,"endColumn":3,"executionContextId":1,"hash":"1d79820963caa6095f970f688f4029287c29c2b3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeCell.js.map","hasSourceURL":false,"isModule":false,"length":24357,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102505,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1434","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js","startLine":0,"startColumn":0,"endLine":134,"endColumn":3,"executionContextId":1,"hash":"04f6e31c66fa3caa60040ae2c193370e5aa6fd0a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cellEdit.js.map","hasSourceURL":false,"isModule":false,"length":6191,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.91","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.600926,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/media/tree.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.91","timestamp":547784.600989,"dataLength":1409,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.91","timestamp":547784.601047,"encodedDataLength":1409,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.92","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.601504,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/media/diffReview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.92","timestamp":547784.601602,"dataLength":1340,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.92","timestamp":547784.601667,"encodedDataLength":1340,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.93","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.601984,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.93","timestamp":547784.602031,"dataLength":1976,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.93","timestamp":547784.602111,"encodedDataLength":1976,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.94","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.602474,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.94","timestamp":547784.60252,"dataLength":1164,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.94","timestamp":547784.602603,"encodedDataLength":1164,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.95","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.602986,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.95","timestamp":547784.603103,"dataLength":5273,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.95","timestamp":547784.603155,"encodedDataLength":5273,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.96","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.603573,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/media/gotoErrorWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.96","timestamp":547784.603614,"dataLength":1945,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.96","timestamp":547784.603808,"encodedDataLength":1945,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.97","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.604222,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.97","timestamp":547784.604267,"dataLength":1027,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.97","timestamp":547784.604336,"encodedDataLength":1027,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.98","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.604687,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHints.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.98","timestamp":547784.604798,"dataLength":2561,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.98","timestamp":547784.604848,"encodedDataLength":2561,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.99","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.60549,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/media/suggest.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.99","timestamp":547784.60554,"dataLength":12152,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.99","timestamp":547784.605613,"encodedDataLength":12152,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.100","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.606305,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/media/suggestStatusBar.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.100","timestamp":547784.606489,"dataLength":1425,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.100","timestamp":547784.606623,"encodedDataLength":1425,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.101","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.607185,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102506,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.101","timestamp":547784.607255,"dataLength":717,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.101","timestamp":547784.607329,"encodedDataLength":717,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.102","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.607794,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.102","timestamp":547784.607882,"dataLength":546,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.102","timestamp":547784.607953,"encodedDataLength":546,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.103","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.608492,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/media/panel.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.103","timestamp":547784.608563,"dataLength":1740,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.103","timestamp":547784.608626,"encodedDataLength":1740,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.104","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.609054,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.104","timestamp":547784.609151,"dataLength":431,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.104","timestamp":547784.609201,"encodedDataLength":431,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.105","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.60955,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.105","timestamp":547784.609618,"dataLength":3770,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.105","timestamp":547784.609699,"encodedDataLength":3770,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.106","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.610096,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.106","timestamp":547784.610183,"dataLength":772,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.106","timestamp":547784.610234,"encodedDataLength":772,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.107","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.61058,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.107","timestamp":547784.610698,"dataLength":1551,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.107","timestamp":547784.610791,"encodedDataLength":1551,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.108","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.611143,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/media/scrollbars.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.108","timestamp":547784.611242,"dataLength":2799,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.108","timestamp":547784.611291,"encodedDataLength":2799,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.109","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.611645,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/tabstitlecontrol.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.109","timestamp":547784.611757,"dataLength":14464,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.109","timestamp":547784.611832,"encodedDataLength":14464,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.110","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.612483,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/notabstitlecontrol.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.110","timestamp":547784.61253,"dataLength":4158,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.110","timestamp":547784.612603,"encodedDataLength":4158,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.111","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.613484,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.111","timestamp":547784.613532,"dataLength":1687,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.111","timestamp":547784.613644,"encodedDataLength":1687,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.112","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.613994,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editorstatus.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.112","timestamp":547784.614037,"dataLength":1253,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.112","timestamp":547784.614084,"encodedDataLength":1253,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.113","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.614408,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/editorquickaccess.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.113","timestamp":547784.614559,"dataLength":578,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102507,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.113","timestamp":547784.614612,"encodedDataLength":578,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.114","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.614904,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.114","timestamp":547784.614947,"dataLength":1216,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.114","timestamp":547784.614994,"encodedDataLength":1216,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.115","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.615344,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.115","timestamp":547784.615424,"dataLength":2317,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.115","timestamp":547784.615474,"encodedDataLength":2317,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.116","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.615802,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.116","timestamp":547784.615846,"dataLength":4767,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.116","timestamp":547784.615898,"encodedDataLength":4767,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.117","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.616274,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/media/quickInput.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.117","timestamp":547784.616316,"dataLength":5945,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.117","timestamp":547784.616372,"encodedDataLength":5945,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.118","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.616762,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.118","timestamp":547784.616806,"dataLength":2911,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.118","timestamp":547784.61686,"encodedDataLength":2911,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.119","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.617256,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/binaryeditor.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.119","timestamp":547784.617304,"dataLength":676,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.119","timestamp":547784.617372,"encodedDataLength":676,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.120","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.617686,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconlabel.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.120","timestamp":547784.617735,"dataLength":2628,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.120","timestamp":547784.617797,"encodedDataLength":2628,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.121","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.61817,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.121","timestamp":547784.618212,"dataLength":584,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.121","timestamp":547784.618259,"encodedDataLength":584,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.122","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.618582,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.122","timestamp":547784.618628,"dataLength":599,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.122","timestamp":547784.618677,"encodedDataLength":599,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.123","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.619029,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.123","timestamp":547784.619074,"dataLength":475,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.123","timestamp":547784.619123,"encodedDataLength":475,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.124","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.619549,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.124","timestamp":547784.619592,"dataLength":2032,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.124","timestamp":547784.619638,"encodedDataLength":2032,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.125","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.620057,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.125","timestamp":547784.620137,"dataLength":1229,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.125","timestamp":547784.620188,"encodedDataLength":1229,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.126","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.620617,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/media/extension.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.126","timestamp":547784.620664,"dataLength":3976,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.126","timestamp":547784.620713,"encodedDataLength":3976,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.127","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.621074,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102508,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.127","timestamp":547784.621162,"dataLength":1474,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.127","timestamp":547784.621214,"encodedDataLength":1474,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.128","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.621952,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/media/feedback.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.128","timestamp":547784.621995,"dataLength":5102,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.128","timestamp":547784.622053,"encodedDataLength":5102,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.129","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.622542,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/media/outlineTree.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.129","timestamp":547784.622593,"dataLength":1247,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.129","timestamp":547784.622657,"encodedDataLength":1247,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.130","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.622999,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/media/symbol-icons.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.130","timestamp":547784.623044,"dataLength":435,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.130","timestamp":547784.623102,"encodedDataLength":435,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.131","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.623458,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/media/notificationsList.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.131","timestamp":547784.623501,"dataLength":3978,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.131","timestamp":547784.623576,"encodedDataLength":3978,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.132","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.623989,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.132","timestamp":547784.624033,"dataLength":3541,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102509,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.132","timestamp":547784.624082,"encodedDataLength":3541,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102530,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1435","url":"file:///Users/roblou/code/vscode/out/vs/base/node/id.js","startLine":0,"startColumn":0,"endLine":89,"endColumn":3,"executionContextId":1,"hash":"1e03c70609ce470d325a19dcc85f8b2f23ad27d5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"id.js.map","hasSourceURL":false,"isModule":false,"length":4294,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102530,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1436","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","startLine":0,"startColumn":0,"endLine":160,"endColumn":3,"executionContextId":1,"hash":"319975882cb5f0cd6a3c68e1497fbc68715e51f1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markdownCellViewModel.js.map","hasSourceURL":false,"isModule":false,"length":8884,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102530,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1437","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js","startLine":0,"startColumn":0,"endLine":27,"endColumn":3,"executionContextId":1,"hash":"38fcd0175390a2f6463871954da6e6cb64e9afc8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mimeTypes.js.map","hasSourceURL":false,"isModule":false,"length":1421,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102530,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1438","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js","startLine":0,"startColumn":0,"endLine":86,"endColumn":3,"executionContextId":1,"hash":"34233ca324ce20b05f3fb4e1b7a19df61b2bd5d9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"languageSelector.js.map","hasSourceURL":false,"isModule":false,"length":3086,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102547,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102548,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102548,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTerminalService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTerminalService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102548,"metadata":{"connectionId":1,"message":{"seq":1342,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102548,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js"},"level":0} {"tag":"dap.send","timestamp":1588425102549,"metadata":{"connectionId":1,"message":{"seq":1343,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTerminalService.js","sourceReference":1005293405}}}},"level":0} {"tag":"dap.send","timestamp":1588425102549,"metadata":{"connectionId":1,"message":{"seq":1344,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js","sourceReference":1686663876}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102550,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102551,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102551,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102551,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTheming.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTheming.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTheming.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTheming.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTheming.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102552,"metadata":{"connectionId":1,"message":{"seq":1345,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js","sourceReference":358137732}}}},"level":0} {"tag":"dap.send","timestamp":1588425102552,"metadata":{"connectionId":1,"message":{"seq":1346,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js","sourceReference":20635923}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102552,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js"},"level":0} {"tag":"dap.send","timestamp":1588425102552,"metadata":{"connectionId":1,"message":{"seq":1347,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTheming.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTheming.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102552,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102553,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTreeViews.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTreeViews.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTreeViews.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102553,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js"},"level":0} {"tag":"dap.send","timestamp":1588425102553,"metadata":{"connectionId":1,"message":{"seq":1348,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js","sourceReference":956027310}}}},"level":0} {"tag":"dap.send","timestamp":1588425102553,"metadata":{"connectionId":1,"message":{"seq":1349,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102553,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102553,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadDownloadService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadDownloadService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadDownloadService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102554,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js"},"level":0} {"tag":"dap.send","timestamp":1588425102554,"metadata":{"connectionId":1,"message":{"seq":1350,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102554,"metadata":{"connectionId":1,"message":{"seq":1351,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js","sourceReference":1346091587}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102555,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102555,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTelemetry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTelemetry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTelemetry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102555,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js"},"level":0} {"tag":"dap.send","timestamp":1588425102556,"metadata":{"connectionId":1,"message":{"seq":1352,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js","sourceReference":1697661432}}}},"level":0} {"tag":"dap.send","timestamp":1588425102556,"metadata":{"connectionId":1,"message":{"seq":1353,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102556,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102556,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadUrls.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadUrls.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadUrls.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadUrls.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadUrls.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102557,"metadata":{"connectionId":1,"message":{"seq":1354,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadUrls.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadUrls.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102557,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102559,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102559,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadWindow.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWindow.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWindow.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWindow.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadWindow.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102559,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102559,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102560,"metadata":{"connectionId":1,"message":{"seq":1355,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js","sourceReference":1107883247}}}},"level":0} {"tag":"dap.send","timestamp":1588425102560,"metadata":{"connectionId":1,"message":{"seq":1356,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js","sourceReference":1710246557}}}},"level":0} {"tag":"dap.send","timestamp":1588425102560,"metadata":{"connectionId":1,"message":{"seq":1357,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWindow.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWindow.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102560,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102560,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadWebview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWebview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWebview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWebview.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadWebview.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102561,"metadata":{"connectionId":1,"message":{"seq":1358,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js","sourceReference":1460120530}}}},"level":0} {"tag":"dap.send","timestamp":1588425102561,"metadata":{"connectionId":1,"message":{"seq":1359,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js","sourceReference":822236673}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102561,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js"},"level":0} {"tag":"dap.send","timestamp":1588425102562,"metadata":{"connectionId":1,"message":{"seq":1360,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWebview.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWebview.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102562,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102563,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102563,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadComments.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadComments.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadComments.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadComments.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadComments.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102564,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js"},"level":0} {"tag":"dap.send","timestamp":1588425102565,"metadata":{"connectionId":1,"message":{"seq":1361,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadComments.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadComments.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102565,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102565,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadLabelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadLabelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLabelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLabelService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadLabelService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102566,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102566,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadWorkspace.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadWorkspace.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadWorkspace.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102566,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102566,"metadata":{"connectionId":1,"message":{"seq":1362,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js","sourceReference":759729117}}}},"level":0} {"tag":"dap.send","timestamp":1588425102566,"metadata":{"connectionId":1,"message":{"seq":1363,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js","sourceReference":1825161171}}}},"level":0} {"tag":"dap.send","timestamp":1588425102566,"metadata":{"connectionId":1,"message":{"seq":1364,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js","sourceReference":986157156}}}},"level":0} {"tag":"dap.send","timestamp":1588425102567,"metadata":{"connectionId":1,"message":{"seq":1365,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLabelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadLabelService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102567,"metadata":{"connectionId":1,"message":{"seq":1366,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102567,"metadata":{"connectionId":1,"message":{"seq":1367,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js","sourceReference":1300258211}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102569,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102570,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102570,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadNotebook.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadNotebook.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadNotebook.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadNotebook.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadNotebook.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102572,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425102573,"metadata":{"connectionId":1,"message":{"seq":1368,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadNotebook.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadNotebook.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102573,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102573,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTask.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTask.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTask.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTask.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTask.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102573,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/configuration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/configuration.js"},"level":0} {"tag":"dap.send","timestamp":1588425102574,"metadata":{"connectionId":1,"message":{"seq":1369,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js","sourceReference":1562728668}}}},"level":0} {"tag":"dap.send","timestamp":1588425102574,"metadata":{"connectionId":1,"message":{"seq":1370,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js","sourceReference":272023780}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102574,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102574,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadAuthentication.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadAuthentication.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadAuthentication.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102574,"metadata":{"connectionId":1,"message":{"seq":1371,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTask.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTask.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102574,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102575,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTunnelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTunnelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTunnelService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102575,"metadata":{"connectionId":1,"message":{"seq":1372,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/configuration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/configuration.js","sourceReference":1677305083}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102576,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/numbers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/numbers.js"},"level":0} {"tag":"dap.send","timestamp":1588425102576,"metadata":{"connectionId":1,"message":{"seq":1373,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102576,"metadata":{"connectionId":1,"message":{"seq":1374,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102577,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102577,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102577,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/browser/mainThreadTimeline.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadTimeline.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTimeline.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTimeline.ts","sourceMapSources":["vs/workbench/api/browser/mainThreadTimeline.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102577,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js"},"level":0} {"tag":"dap.send","timestamp":1588425102578,"metadata":{"connectionId":1,"message":{"seq":1375,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/numbers.js","path":"/Users/roblou/code/vscode/out/vs/base/common/numbers.js","sourceReference":966020216}}}},"level":0} {"tag":"dap.send","timestamp":1588425102578,"metadata":{"connectionId":1,"message":{"seq":1376,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js","sourceReference":110154528}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102579,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102579,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/apiCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/apiCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/apiCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/apiCommands.ts","sourceMapSources":["vs/workbench/api/common/apiCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102579,"metadata":{"connectionId":1,"message":{"seq":1377,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTimeline.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/browser/mainThreadTimeline.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102579,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102579,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/configuration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/configuration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/configuration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/configuration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/configuration.ts","sourceMapSources":["vs/workbench/common/configuration.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102579,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/views.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/views.js"},"level":0} {"tag":"dap.send","timestamp":1588425102579,"metadata":{"connectionId":1,"message":{"seq":1378,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js","sourceReference":1118458664}}}},"level":0} {"tag":"dap.send","timestamp":1588425102580,"metadata":{"connectionId":1,"message":{"seq":1379,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/apiCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/apiCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102580,"metadata":{"connectionId":1,"message":{"seq":1380,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/configuration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/configuration.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102581,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102582,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102582,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/numbers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/numbers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/numbers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/numbers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/numbers.ts","sourceMapSources":["vs/base/common/numbers.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102582,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/collections.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/collections.js"},"level":0} {"tag":"dap.send","timestamp":1588425102583,"metadata":{"connectionId":1,"message":{"seq":1381,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/views.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/views.js","sourceReference":89761414}}}},"level":0} {"tag":"dap.send","timestamp":1588425102583,"metadata":{"connectionId":1,"message":{"seq":1382,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js","sourceReference":1825278004}}}},"level":0} {"tag":"dap.send","timestamp":1588425102584,"metadata":{"connectionId":1,"message":{"seq":1383,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/numbers.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/numbers.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102584,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102584,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/getIconClasses.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/getIconClasses.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/getIconClasses.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/getIconClasses.ts","sourceMapSources":["vs/editor/common/services/getIconClasses.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102584,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102584,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/viewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/viewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/viewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/viewlet.ts","sourceMapSources":["vs/workbench/common/viewlet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102584,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102585,"metadata":{"connectionId":1,"message":{"seq":1384,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/collections.js","path":"/Users/roblou/code/vscode/out/vs/base/common/collections.js","sourceReference":217425697}}}},"level":0} {"tag":"dap.send","timestamp":1588425102586,"metadata":{"connectionId":1,"message":{"seq":1385,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js","sourceReference":1276543460}}}},"level":0} {"tag":"dap.send","timestamp":1588425102587,"metadata":{"connectionId":1,"message":{"seq":1386,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/getIconClasses.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/getIconClasses.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102587,"metadata":{"connectionId":1,"message":{"seq":1387,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/viewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/viewlet.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102588,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102588,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/views.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/views.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/views.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/views.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/views.ts","sourceMapSources":["vs/workbench/common/views.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102588,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425102588,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1439","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"36d875e421d5403c19e498dac9207c537906eb80","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rowCache.js.map","hasSourceURL":false,"isModule":false,"length":3187,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102588,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1440","url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":3,"executionContextId":1,"hash":"36a1a7d94024180d5dd9155803162ee56bd21948","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"diffChange.js.map","hasSourceURL":false,"isModule":false,"length":1731,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102588,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1441","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js","startLine":0,"startColumn":0,"endLine":154,"endColumn":3,"executionContextId":1,"hash":"3774b5358ed4255a7420dbb687892b4051313a09","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rangeMap.js.map","hasSourceURL":false,"isModule":false,"length":5546,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102588,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1442","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","startLine":0,"startColumn":0,"endLine":811,"endColumn":3,"executionContextId":1,"hash":"00793f1d24481bd77ac780717934c1fa770e25ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"standaloneEnums.js.map","hasSourceURL":false,"isModule":false,"length":43718,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102588,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1443","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js","startLine":0,"startColumn":0,"endLine":78,"endColumn":3,"executionContextId":1,"hash":"15f3ddb1316af0be2a7ad38fb139f3b77f7f3dd3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"keybindingCancellation.js.map","hasSourceURL":false,"isModule":false,"length":3632,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102588,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1444","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js","startLine":0,"startColumn":0,"endLine":450,"endColumn":3,"executionContextId":1,"hash":"0b98ed813b871e1f11e477c96802dbc72b512e46","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textAreaHandler.js.map","hasSourceURL":false,"isModule":false,"length":24319,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.133","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.686111,"wallTime":1588425102.564554,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1445","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js","startLine":0,"startColumn":0,"endLine":272,"endColumn":3,"executionContextId":1,"hash":"15a271cfa0a028386703478f9e59f75a39c2838a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"pointerHandler.js.map","hasSourceURL":false,"isModule":false,"length":14455,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1446","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js","startLine":0,"startColumn":0,"endLine":212,"endColumn":3,"executionContextId":1,"hash":"0c57d17146b2ce0c78bd53215a7d25375436f4b4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewOverlays.js.map","hasSourceURL":false,"isModule":false,"length":8902,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1447","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js","startLine":0,"startColumn":0,"endLine":264,"endColumn":3,"executionContextId":1,"hash":"3968c8941da90f774b4a14fe1deb3b290cf616f4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewController.js.map","hasSourceURL":false,"isModule":false,"length":11453,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1448","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js","startLine":0,"startColumn":0,"endLine":69,"endColumn":3,"executionContextId":1,"hash":"3c18424f4356029d2f57447637357fdd61209c6d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewPart.js.map","hasSourceURL":false,"isModule":false,"length":3221,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1449","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","startLine":0,"startColumn":0,"endLine":411,"endColumn":3,"executionContextId":1,"hash":"337affd05a88d48077aff27e8c6dce8423bf8d0f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"contentWidgets.js.map","hasSourceURL":false,"isModule":false,"length":18954,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1450","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","startLine":0,"startColumn":0,"endLine":180,"endColumn":3,"executionContextId":1,"hash":"12dc856b7220814c54d2d434beb0140c7c952a49","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"currentLineHighlight.js.map","hasSourceURL":false,"isModule":false,"length":9179,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.134","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.690101,"wallTime":1588425102.568543,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1451","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js","startLine":0,"startColumn":0,"endLine":195,"endColumn":3,"executionContextId":1,"hash":"0b5a19a85456f04b4aa96bae9acd861f577d835a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"decorations.js.map","hasSourceURL":false,"isModule":false,"length":9557,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.135","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.691145,"wallTime":1588425102.569587,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1452","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","startLine":0,"startColumn":0,"endLine":135,"endColumn":3,"executionContextId":1,"hash":"1a52cf6d1be5882a70344f825b5acb422ecc5c20","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorScrollbar.js.map","hasSourceURL":false,"isModule":false,"length":7750,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1453","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js","startLine":0,"startColumn":0,"endLine":143,"endColumn":3,"executionContextId":1,"hash":"17b79804013b9fce62181a6406281b7228163799","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"indentGuides.js.map","hasSourceURL":false,"isModule":false,"length":7440,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.136","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.692765,"wallTime":1588425102.571207,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1454","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"2665fbff9891c7950b19e39e884ea23c00a9ad94","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"glyphMargin.js.map","hasSourceURL":false,"isModule":false,"length":7187,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102589,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.137","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.693783,"wallTime":1588425102.572225,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1455","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","startLine":0,"startColumn":0,"endLine":153,"endColumn":3,"executionContextId":1,"hash":"0facd4bb25d32288095972474d7f34a326c0b711","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lineNumbers.js.map","hasSourceURL":false,"isModule":false,"length":7710,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.138","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.694735,"wallTime":1588425102.573176,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1456","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js","startLine":0,"startColumn":0,"endLine":660,"endColumn":3,"executionContextId":1,"hash":"380b880d9a3ff8ef34166cca95ba216f2fdadef6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewLines.js.map","hasSourceURL":false,"isModule":false,"length":37685,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.139","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.696245,"wallTime":1588425102.574687,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1457","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","startLine":0,"startColumn":0,"endLine":99,"endColumn":3,"executionContextId":1,"hash":"28a512c71f8416fc4a62cddd64772ba0791f2239","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linesDecorations.js.map","hasSourceURL":false,"isModule":false,"length":4544,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.140","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.696978,"wallTime":1588425102.57542,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1458","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js","startLine":0,"startColumn":0,"endLine":70,"endColumn":3,"executionContextId":1,"hash":"089947ed8473b6ee5b6df3be29ec2b6f297e457d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"margin.js.map","hasSourceURL":false,"isModule":false,"length":3757,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1459","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"23a88539499dbdc16f24781fcd292a6403722750","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"marginDecorations.js.map","hasSourceURL":false,"isModule":false,"length":3510,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.141","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.698007,"wallTime":1588425102.576449,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1460","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","startLine":0,"startColumn":0,"endLine":371,"endColumn":3,"executionContextId":1,"hash":"279ae1c1a5e5b3913475644570f8fa6818a6a7d8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"decorationsOverviewRuler.js.map","hasSourceURL":false,"isModule":false,"length":17081,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102590,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1461","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","startLine":0,"startColumn":0,"endLine":109,"endColumn":3,"executionContextId":1,"hash":"3b0038ff7e7a9f740877ffae9fb37dd04660d23b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"overlayWidgets.js.map","hasSourceURL":false,"isModule":false,"length":5071,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.142","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.69938,"wallTime":1588425102.577822,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1462","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js","startLine":0,"startColumn":0,"endLine":1262,"endColumn":3,"executionContextId":1,"hash":"26d8556219d1de9c35c803fe02c67e856c1822e9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimap.js.map","hasSourceURL":false,"isModule":false,"length":68205,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.143","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.701703,"wallTime":1588425102.580145,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1463","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","startLine":0,"startColumn":0,"endLine":131,"endColumn":3,"executionContextId":1,"hash":"1d3252e89d32cd8533fbe4df9be60e114b0f7ae3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"overviewRuler.js.map","hasSourceURL":false,"isModule":false,"length":6140,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1464","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","startLine":0,"startColumn":0,"endLine":77,"endColumn":3,"executionContextId":1,"hash":"0d49445c90dadac9551531cd94d660f85f64c2dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scrollDecoration.js.map","hasSourceURL":false,"isModule":false,"length":3582,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.144","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.702953,"wallTime":1588425102.581395,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1465","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js","startLine":0,"startColumn":0,"endLine":303,"endColumn":3,"executionContextId":1,"hash":"21b0ce50292254b519bb927c2f4ec0d60dfe8de3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewCursors.js.map","hasSourceURL":false,"isModule":false,"length":14511,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.145","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.704271,"wallTime":1588425102.582713,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102591,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1466","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"1d032d4535e9e67a78d79eb5030370cc64d110fb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rulers.js.map","hasSourceURL":false,"isModule":false,"length":4113,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.146","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.705178,"wallTime":1588425102.583619,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1467","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js","startLine":0,"startColumn":0,"endLine":353,"endColumn":3,"executionContextId":1,"hash":"3b08be85225d80620a93d69904b82246303edc11","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"selections.js.map","hasSourceURL":false,"isModule":false,"length":20398,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.147","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.70623,"wallTime":1588425102.584672,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.133","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.709476,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.133","timestamp":547784.709554,"dataLength":974,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.133","timestamp":547784.709613,"encodedDataLength":974,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.134","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.710807,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.134","timestamp":547784.710857,"dataLength":740,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.134","timestamp":547784.710907,"encodedDataLength":740,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.135","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.711301,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.135","timestamp":547784.711349,"dataLength":498,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102592,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.135","timestamp":547784.711405,"encodedDataLength":498,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102593,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.136","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.711761,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102593,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.136","timestamp":547784.711822,"dataLength":564,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102593,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.136","timestamp":547784.711889,"encodedDataLength":564,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102593,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.137","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.712196,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102593,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.137","timestamp":547784.712237,"dataLength":637,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102593,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.137","timestamp":547784.712309,"encodedDataLength":637,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102594,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102594,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/quickaccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/quickaccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/quickaccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/quickaccess.ts","sourceMapSources":["vs/workbench/browser/quickaccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102594,"metadata":{"connectionId":1,"message":{"seq":1388,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/views.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/views.ts","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.138","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.712613,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.138","timestamp":547784.712656,"dataLength":781,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.138","timestamp":547784.712722,"encodedDataLength":781,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.139","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.713034,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.139","timestamp":547784.713077,"dataLength":1191,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.139","timestamp":547784.71315,"encodedDataLength":1191,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.140","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.713506,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.140","timestamp":547784.713556,"dataLength":616,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.140","timestamp":547784.713603,"encodedDataLength":616,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.141","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.713886,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.141","timestamp":547784.713931,"dataLength":553,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.141","timestamp":547784.713979,"encodedDataLength":553,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.142","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.714322,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.142","timestamp":547784.714375,"dataLength":425,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.142","timestamp":547784.71444,"encodedDataLength":425,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.143","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.714723,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.143","timestamp":547784.714817,"dataLength":912,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.143","timestamp":547784.714871,"encodedDataLength":912,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.144","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.715201,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.144","timestamp":547784.715353,"dataLength":444,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.144","timestamp":547784.715407,"encodedDataLength":444,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.145","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.715772,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.145","timestamp":547784.715819,"dataLength":1874,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102595,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.145","timestamp":547784.715877,"encodedDataLength":1874,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425102595,"metadata":{"connectionId":1,"message":{"seq":1389,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js","sourceReference":1452204830}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102596,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js"},"level":0} {"tag":"dap.send","timestamp":1588425102596,"metadata":{"connectionId":1,"message":{"seq":1390,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/quickaccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/quickaccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102596,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102596,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/collections.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/collections.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/collections.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/collections.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/collections.ts","sourceMapSources":["vs/base/common/collections.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102597,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425102598,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.146","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.716242,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102598,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.146","timestamp":547784.716287,"dataLength":413,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102598,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.146","timestamp":547784.716334,"encodedDataLength":413,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425102605,"metadata":{"connectionId":1,"message":{"seq":1391,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/collections.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/collections.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102605,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102605,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/panel/common/panelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/panel/common/panelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/panel/common/panelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/panel/common/panelService.ts","sourceMapSources":["vs/workbench/services/panel/common/panelService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102605,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js"},"level":0} {"tag":"dap.send","timestamp":1588425102606,"metadata":{"connectionId":1,"message":{"seq":1392,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js","sourceReference":628564471}}}},"level":0} {"tag":"dap.send","timestamp":1588425102606,"metadata":{"connectionId":1,"message":{"seq":1393,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js","sourceReference":447310070}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102606,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js"},"level":0} {"tag":"dap.send","timestamp":1588425102606,"metadata":{"connectionId":1,"message":{"seq":1394,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/panel/common/panelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/panel/common/panelService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102606,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102606,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/activityBar/browser/activityBarService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/activityBar/browser/activityBarService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/activityBar/browser/activityBarService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/activityBar/browser/activityBarService.ts","sourceMapSources":["vs/workbench/services/activityBar/browser/activityBarService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102607,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js"},"level":0} {"tag":"dap.send","timestamp":1588425102607,"metadata":{"connectionId":1,"message":{"seq":1395,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/activityBar/browser/activityBarService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/activityBar/browser/activityBarService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102607,"metadata":{"connectionId":1,"message":{"seq":1396,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js","sourceReference":1831271913}}}},"level":0} {"tag":"dap.send","timestamp":1588425102607,"metadata":{"connectionId":1,"message":{"seq":1397,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js","sourceReference":1074790890}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102608,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102608,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/common/configuration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configuration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configuration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configuration.ts","sourceMapSources":["vs/workbench/services/configuration/common/configuration.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102608,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102608,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/views/treeView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/treeView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/treeView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/treeView.ts","sourceMapSources":["vs/workbench/browser/parts/views/treeView.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102609,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js"},"level":0} {"tag":"dap.send","timestamp":1588425102609,"metadata":{"connectionId":1,"message":{"seq":1398,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configuration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configuration.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102609,"metadata":{"connectionId":1,"message":{"seq":1399,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/treeView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/treeView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102610,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102610,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/viewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/viewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/viewlet.ts","sourceMapSources":["vs/workbench/browser/viewlet.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102610,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102610,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/common/scm.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scm.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scm.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scm.ts","sourceMapSources":["vs/workbench/contrib/scm/common/scm.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102610,"metadata":{"connectionId":1,"message":{"seq":1400,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/viewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/viewlet.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102610,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102611,"metadata":{"connectionId":1,"message":{"seq":1401,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","sourceReference":1900187569}}}},"level":0} {"tag":"dap.send","timestamp":1588425102611,"metadata":{"connectionId":1,"message":{"seq":1402,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js","sourceReference":1495135735}}}},"level":0} {"tag":"dap.send","timestamp":1588425102611,"metadata":{"connectionId":1,"message":{"seq":1403,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scm.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scm.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102612,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102612,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/views/viewPaneContainer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.ts","sourceMapSources":["vs/workbench/browser/parts/views/viewPaneContainer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102612,"metadata":{"connectionId":1,"message":{"seq":1404,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102613,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102615,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102615,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/grid/grid.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/grid/grid.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/grid/grid.ts","sourceMapSources":["vs/base/browser/ui/grid/grid.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102619,"metadata":{"connectionId":1,"message":{"seq":1405,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/grid/grid.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/grid/grid.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102619,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102619,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js"},"level":0} {"tag":"dap.send","timestamp":1588425102620,"metadata":{"connectionId":1,"message":{"seq":1406,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","sourceReference":1026328445}}}},"level":0} {"tag":"dap.send","timestamp":1588425102620,"metadata":{"connectionId":1,"message":{"seq":1407,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js","sourceReference":124352908}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102620,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102620,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorGroupView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorGroupView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorGroupView.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorGroupView.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102621,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js"},"level":0} {"tag":"dap.send","timestamp":1588425102623,"metadata":{"connectionId":1,"message":{"seq":1408,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorGroupView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorGroupView.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102623,"metadata":{"connectionId":1,"message":{"seq":1409,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js","sourceReference":1681668129}}}},"level":0} {"tag":"dap.send","timestamp":1588425102623,"metadata":{"connectionId":1,"message":{"seq":1410,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js","sourceReference":526159726}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102624,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102624,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/editorGroup.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/editorGroup.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/editorGroup.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/editorGroup.ts","sourceMapSources":["vs/workbench/common/editor/editorGroup.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102624,"metadata":{"connectionId":1,"message":{"seq":1411,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","sourceReference":359022485}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102627,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425102628,"metadata":{"connectionId":1,"message":{"seq":1412,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/editorGroup.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/editorGroup.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102628,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102628,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/centered/centeredViewLayout.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/centered/centeredViewLayout.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.ts","sourceMapSources":["vs/base/browser/ui/centered/centeredViewLayout.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102628,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102628,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/dnd.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/dnd.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/dnd.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/dnd.ts","sourceMapSources":["vs/workbench/browser/dnd.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102628,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js"},"level":0} {"tag":"dap.send","timestamp":1588425102629,"metadata":{"connectionId":1,"message":{"seq":1413,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102629,"metadata":{"connectionId":1,"message":{"seq":1414,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/dnd.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/dnd.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102629,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102629,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/compositePart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositePart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositePart.ts","sourceMapSources":["vs/workbench/browser/parts/compositePart.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102630,"metadata":{"connectionId":1,"message":{"seq":1415,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositePart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositePart.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102630,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/activity.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/activity.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102631,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102632,"metadata":{"connectionId":1,"message":{"seq":1416,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js","sourceReference":1819888568}}}},"level":0} {"tag":"dap.send","timestamp":1588425102632,"metadata":{"connectionId":1,"message":{"seq":1417,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js","sourceReference":1114582031}}}},"level":0} {"tag":"dap.send","timestamp":1588425102632,"metadata":{"connectionId":1,"message":{"seq":1418,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/activity.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/activity.js","sourceReference":1519771802}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102633,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102633,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editor.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editor.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editor.contribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102633,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js"},"level":0} {"tag":"dap.send","timestamp":1588425102633,"metadata":{"connectionId":1,"message":{"seq":1419,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js","sourceReference":1532503961}}}},"level":0} {"tag":"dap.send","timestamp":1588425102634,"metadata":{"connectionId":1,"message":{"seq":1420,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102634,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102634,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorDropTarget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorDropTarget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorDropTarget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102634,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js"},"level":0} {"tag":"dap.send","timestamp":1588425102635,"metadata":{"connectionId":1,"message":{"seq":1421,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102635,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102635,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/activity.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/activity.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/activity.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/activity.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/activity.ts","sourceMapSources":["vs/workbench/common/activity.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102636,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102636,"metadata":{"connectionId":1,"message":{"seq":1422,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js","sourceReference":1773360591}}}},"level":0} {"tag":"dap.send","timestamp":1588425102636,"metadata":{"connectionId":1,"message":{"seq":1423,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js","sourceReference":2114253625}}}},"level":0} {"tag":"dap.send","timestamp":1588425102637,"metadata":{"connectionId":1,"message":{"seq":1424,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/activity.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/activity.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102637,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102637,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/activitybar/activitybarActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/activitybar/activitybarActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts","sourceMapSources":["vs/workbench/browser/parts/activitybar/activitybarActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102637,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102638,"metadata":{"connectionId":1,"message":{"seq":1425,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102638,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102638,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/activity/common/activity.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/activity/common/activity.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/activity/common/activity.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/activity/common/activity.ts","sourceMapSources":["vs/workbench/services/activity/common/activity.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102638,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102638,"metadata":{"connectionId":1,"message":{"seq":1426,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js","sourceReference":1853700177}}}},"level":0} {"tag":"dap.send","timestamp":1588425102638,"metadata":{"connectionId":1,"message":{"seq":1427,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js","sourceReference":1569386792}}}},"level":0} {"tag":"dap.send","timestamp":1588425102639,"metadata":{"connectionId":1,"message":{"seq":1428,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/activity/common/activity.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/activity/common/activity.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102639,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102639,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/compositeBar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBar.ts","sourceMapSources":["vs/workbench/browser/parts/compositeBar.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102639,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/panel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/panel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102640,"metadata":{"connectionId":1,"message":{"seq":1429,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js","sourceReference":650246727}}}},"level":0} {"tag":"dap.send","timestamp":1588425102641,"metadata":{"connectionId":1,"message":{"seq":1430,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBar.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBar.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102642,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102642,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/compositeBarActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositeBarActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBarActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBarActions.ts","sourceMapSources":["vs/workbench/browser/parts/compositeBarActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102642,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102642,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js"},"level":0} {"tag":"dap.send","timestamp":1588425102642,"metadata":{"connectionId":1,"message":{"seq":1431,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/panel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/panel.js","sourceReference":1396269807}}}},"level":0} {"tag":"dap.send","timestamp":1588425102643,"metadata":{"connectionId":1,"message":{"seq":1432,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBarActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/compositeBarActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102643,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102643,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/panel/panelActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/panel/panelActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelActions.ts","sourceMapSources":["vs/workbench/browser/parts/panel/panelActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102643,"metadata":{"connectionId":1,"message":{"seq":1433,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js","sourceReference":946650843}}}},"level":0} {"tag":"dap.send","timestamp":1588425102643,"metadata":{"connectionId":1,"message":{"seq":1434,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js","sourceReference":1609943641}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102644,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js"},"level":0} {"tag":"dap.send","timestamp":1588425102644,"metadata":{"connectionId":1,"message":{"seq":1435,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/panel/panelActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102644,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102644,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/views/viewMenuActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewMenuActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewMenuActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewMenuActions.ts","sourceMapSources":["vs/workbench/browser/parts/views/viewMenuActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102645,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102646,"metadata":{"connectionId":1,"message":{"seq":1436,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewMenuActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewMenuActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102646,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102646,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/panel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/panel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/panel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/panel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/panel.ts","sourceMapSources":["vs/workbench/common/panel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102646,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/json.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/json.js"},"level":0} {"tag":"dap.send","timestamp":1588425102646,"metadata":{"connectionId":1,"message":{"seq":1437,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js","path":"/Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js","sourceReference":1241253410}}}},"level":0} {"tag":"dap.send","timestamp":1588425102646,"metadata":{"connectionId":1,"message":{"seq":1438,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js","sourceReference":1706168146}}}},"level":0} {"tag":"dap.send","timestamp":1588425102647,"metadata":{"connectionId":1,"message":{"seq":1439,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/panel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/panel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102647,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102647,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/codicons/codiconLabel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codiconLabel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconLabel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconLabel.ts","sourceMapSources":["vs/base/browser/ui/codicons/codiconLabel.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102647,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102647,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/editorCommon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/editorCommon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/editorCommon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/editorCommon.ts","sourceMapSources":["vs/editor/common/editorCommon.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102649,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js"},"level":0} {"tag":"dap.send","timestamp":1588425102650,"metadata":{"connectionId":1,"message":{"seq":1440,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconLabel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/codicons/codiconLabel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102650,"metadata":{"connectionId":1,"message":{"seq":1441,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/editorCommon.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/editorCommon.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102650,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js"},"level":0} {"tag":"dap.send","timestamp":1588425102650,"metadata":{"connectionId":1,"message":{"seq":1442,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/json.js","path":"/Users/roblou/code/vscode/out/vs/base/common/json.js","sourceReference":1947114471}}}},"level":0} {"tag":"dap.send","timestamp":1588425102650,"metadata":{"connectionId":1,"message":{"seq":1443,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js","sourceReference":394134896}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102651,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102651,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/jsonEdit.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/jsonEdit.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/jsonEdit.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/jsonEdit.ts","sourceMapSources":["vs/base/common/jsonEdit.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102651,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102651,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/services/bulkEditService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/bulkEditService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/services/bulkEditService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/services/bulkEditService.ts","sourceMapSources":["vs/editor/browser/services/bulkEditService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102651,"metadata":{"connectionId":1,"message":{"seq":1444,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js","sourceReference":1148764867}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102652,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js"},"level":0} {"tag":"dap.send","timestamp":1588425102652,"metadata":{"connectionId":1,"message":{"seq":1445,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/jsonEdit.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/jsonEdit.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102652,"metadata":{"connectionId":1,"message":{"seq":1446,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/services/bulkEditService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/services/bulkEditService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102652,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102652,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/json.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/json.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/json.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/json.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/json.ts","sourceMapSources":["vs/base/common/json.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102653,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedText.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/linkedText.js"},"level":0} {"tag":"dap.send","timestamp":1588425102653,"metadata":{"connectionId":1,"message":{"seq":1447,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/json.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/json.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102653,"metadata":{"connectionId":1,"message":{"seq":1448,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","sourceReference":2035074780}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102654,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102654,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102654,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/statusbar/common/statusbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/statusbar/common/statusbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/statusbar/common/statusbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/statusbar/common/statusbar.ts","sourceMapSources":["vs/workbench/services/statusbar/common/statusbar.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102654,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102654,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/editorBrowser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/editorBrowser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/editorBrowser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/editorBrowser.ts","sourceMapSources":["vs/editor/browser/editorBrowser.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102654,"metadata":{"connectionId":1,"message":{"seq":1449,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/linkedText.js","path":"/Users/roblou/code/vscode/out/vs/base/common/linkedText.js","sourceReference":596736514}}}},"level":0} {"tag":"dap.send","timestamp":1588425102654,"metadata":{"connectionId":1,"message":{"seq":1450,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js","path":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js","sourceReference":1027251408}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102655,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425102655,"metadata":{"connectionId":1,"message":{"seq":1451,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/statusbar/common/statusbar.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/statusbar/common/statusbar.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102655,"metadata":{"connectionId":1,"message":{"seq":1452,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/editorBrowser.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/editorBrowser.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102655,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102656,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102656,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/selection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","sourceMapSources":["vs/editor/common/core/selection.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102657,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102657,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102657,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/linkedText.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedText.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/linkedText.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/linkedText.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/linkedText.ts","sourceMapSources":["vs/base/common/linkedText.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102657,"metadata":{"connectionId":1,"message":{"seq":1453,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102657,"metadata":{"connectionId":1,"message":{"seq":1454,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js","sourceReference":135803514}}}},"level":0} {"tag":"dap.send","timestamp":1588425102657,"metadata":{"connectionId":1,"message":{"seq":1455,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js","sourceReference":1500041572}}}},"level":0} {"tag":"dap.send","timestamp":1588425102657,"metadata":{"connectionId":1,"message":{"seq":1456,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js","path":"/Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js","sourceReference":81206617}}}},"level":0} {"tag":"dap.send","timestamp":1588425102658,"metadata":{"connectionId":1,"message":{"seq":1457,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/linkedText.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/linkedText.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102658,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102658,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/linkedList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","sourceMapSources":["vs/base/common/linkedList.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102658,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102658,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/services/codeEditorServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/codeEditorServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl.ts","sourceMapSources":["vs/editor/browser/services/codeEditorServiceImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102659,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102659,"metadata":{"connectionId":1,"message":{"seq":1458,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102659,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102659,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/decorations/browser/decorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/decorations/browser/decorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorations.ts","sourceMapSources":["vs/workbench/services/decorations/browser/decorations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102659,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102660,"metadata":{"connectionId":1,"message":{"seq":1459,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102660,"metadata":{"connectionId":1,"message":{"seq":1460,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/decorations/browser/decorations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102660,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102660,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/editor/common/editor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/editor/common/editor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/editor/common/editor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/editor/common/editor.ts","sourceMapSources":["vs/platform/editor/common/editor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102660,"metadata":{"connectionId":1,"message":{"seq":1461,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js","sourceReference":1329189781}}}},"level":0} {"tag":"dap.send","timestamp":1588425102660,"metadata":{"connectionId":1,"message":{"seq":1462,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js","sourceReference":2140772909}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102661,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js"},"level":0} {"tag":"dap.send","timestamp":1588425102661,"metadata":{"connectionId":1,"message":{"seq":1463,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/editor/common/editor.ts","path":"/Users/roblou/code/vscode/src/vs/platform/editor/common/editor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102661,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102663,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102663,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/resourceEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorInput.ts","sourceMapSources":["vs/workbench/common/editor/resourceEditorInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102663,"metadata":{"connectionId":1,"message":{"seq":1464,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js","sourceReference":285510365}}}},"level":0} {"tag":"dap.send","timestamp":1588425102663,"metadata":{"connectionId":1,"message":{"seq":1465,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js","sourceReference":1079711880}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102663,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102663,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102663,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/diffEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorInput.ts","sourceMapSources":["vs/workbench/common/editor/diffEditorInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102663,"metadata":{"connectionId":1,"message":{"seq":1466,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102664,"metadata":{"connectionId":1,"message":{"seq":1467,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102664,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102664,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorsObserver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorsObserver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorsObserver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorsObserver.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorsObserver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102664,"metadata":{"connectionId":1,"message":{"seq":1468,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js","sourceReference":1766041173}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102665,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102665,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102665,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/dialog/dialog.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dialog/dialog.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/dialog/dialog.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/dialog/dialog.ts","sourceMapSources":["vs/base/browser/ui/dialog/dialog.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102665,"metadata":{"connectionId":1,"message":{"seq":1469,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorsObserver.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorsObserver.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102666,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js"},"level":0} {"tag":"dap.send","timestamp":1588425102666,"metadata":{"connectionId":1,"message":{"seq":1470,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/dialog/dialog.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/dialog/dialog.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102666,"metadata":{"connectionId":1,"message":{"seq":1471,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js","sourceReference":948553507}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102667,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102667,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102667,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/untitled/common/untitledTextEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts","sourceMapSources":["vs/workbench/services/untitled/common/untitledTextEditorInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102668,"metadata":{"connectionId":1,"message":{"seq":1472,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102668,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js"},"level":0} {"tag":"dap.send","timestamp":1588425102668,"metadata":{"connectionId":1,"message":{"seq":1473,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js","sourceReference":1968183328}}}},"level":0} {"tag":"dap.send","timestamp":1588425102668,"metadata":{"connectionId":1,"message":{"seq":1474,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js","path":"/Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js","sourceReference":910438641}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102669,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102669,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/resourceEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/resourceEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorModel.ts","sourceMapSources":["vs/workbench/common/editor/resourceEditorModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102669,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102669,"metadata":{"connectionId":1,"message":{"seq":1475,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js","sourceReference":25030291}}}},"level":0} {"tag":"dap.send","timestamp":1588425102670,"metadata":{"connectionId":1,"message":{"seq":1476,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/resourceEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102670,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102670,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/editor/common/editorAssociationsSetting.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/editor/common/editorAssociationsSetting.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts","sourceMapSources":["vs/workbench/services/editor/common/editorAssociationsSetting.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102670,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102671,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102671,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/keybindingParser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/keybindingParser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/keybindingParser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/keybindingParser.ts","sourceMapSources":["vs/base/common/keybindingParser.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102671,"metadata":{"connectionId":1,"message":{"seq":1477,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102671,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js"},"level":0} {"tag":"dap.send","timestamp":1588425102672,"metadata":{"connectionId":1,"message":{"seq":1478,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/keybindingParser.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/keybindingParser.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102672,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102672,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/preferences/common/preferences.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferences.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferences.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferences.ts","sourceMapSources":["vs/workbench/services/preferences/common/preferences.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102672,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js"},"level":0} {"tag":"dap.send","timestamp":1588425102673,"metadata":{"connectionId":1,"message":{"seq":1479,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js","sourceReference":1123498185}}}},"level":0} {"tag":"dap.send","timestamp":1588425102673,"metadata":{"connectionId":1,"message":{"seq":1480,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js","sourceReference":598753914}}}},"level":0} {"tag":"dap.send","timestamp":1588425102673,"metadata":{"connectionId":1,"message":{"seq":1481,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferences.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferences.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102673,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102673,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textfile/common/textFileEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.ts","sourceMapSources":["vs/workbench/services/textfile/common/textFileEditorModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102673,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102674,"metadata":{"connectionId":1,"message":{"seq":1482,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102674,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102674,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/preferences/common/preferencesEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts","sourceMapSources":["vs/workbench/services/preferences/common/preferencesEditorInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102675,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js"},"level":0} {"tag":"dap.send","timestamp":1588425102675,"metadata":{"connectionId":1,"message":{"seq":1483,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js","sourceReference":1905962412}}}},"level":0} {"tag":"dap.send","timestamp":1588425102675,"metadata":{"connectionId":1,"message":{"seq":1484,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js","sourceReference":1916244824}}}},"level":0} {"tag":"dap.send","timestamp":1588425102675,"metadata":{"connectionId":1,"message":{"seq":1485,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569}}}},"level":0} {"tag":"dap.send","timestamp":1588425102675,"metadata":{"connectionId":1,"message":{"seq":1486,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102675,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102675,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/preferences/common/preferencesModels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesModels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesModels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesModels.ts","sourceMapSources":["vs/workbench/services/preferences/common/preferencesModels.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102676,"metadata":{"connectionId":1,"message":{"seq":1487,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js","sourceReference":1723078180}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102676,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/scanCode.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/scanCode.js"},"level":0} {"tag":"dap.send","timestamp":1588425102676,"metadata":{"connectionId":1,"message":{"seq":1488,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesModels.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesModels.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102676,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102676,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/keybindingIO.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/keybindingIO.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO.ts","sourceMapSources":["vs/workbench/services/keybinding/common/keybindingIO.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102678,"metadata":{"connectionId":1,"message":{"seq":1489,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102678,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102678,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/abstractKeybindingService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceMapSources":["vs/platform/keybinding/common/abstractKeybindingService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102678,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/panel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102680,"metadata":{"connectionId":1,"message":{"seq":1490,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102681,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102681,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/keybinding/common/dispatchConfig.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/keybinding/common/dispatchConfig.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig.ts","sourceMapSources":["vs/workbench/services/keybinding/common/dispatchConfig.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102681,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js"},"level":0} {"tag":"dap.send","timestamp":1588425102681,"metadata":{"connectionId":1,"message":{"seq":1491,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/scanCode.js","path":"/Users/roblou/code/vscode/out/vs/base/common/scanCode.js","sourceReference":1061884134}}}},"level":0} {"tag":"dap.send","timestamp":1588425102682,"metadata":{"connectionId":1,"message":{"seq":1492,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102683,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/marshalling.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/marshalling.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102684,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102684,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/scanCode.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/scanCode.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/scanCode.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/scanCode.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/scanCode.ts","sourceMapSources":["vs/base/common/scanCode.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102685,"metadata":{"connectionId":1,"message":{"seq":1493,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/scanCode.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/scanCode.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102685,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102685,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/panel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/panel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/panel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/panel.ts","sourceMapSources":["vs/workbench/browser/panel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102685,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102685,"metadata":{"connectionId":1,"message":{"seq":1494,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/panel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/panel.js","sourceReference":1640559831}}}},"level":0} {"tag":"dap.send","timestamp":1588425102685,"metadata":{"connectionId":1,"message":{"seq":1495,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js","sourceReference":1411119735}}}},"level":0} {"tag":"dap.send","timestamp":1588425102685,"metadata":{"connectionId":1,"message":{"seq":1496,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/marshalling.js","path":"/Users/roblou/code/vscode/out/vs/base/common/marshalling.js","sourceReference":217164736}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102686,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102686,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/resolvedKeybindingItem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/resolvedKeybindingItem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts","sourceMapSources":["vs/platform/keybinding/common/resolvedKeybindingItem.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102686,"metadata":{"connectionId":1,"message":{"seq":1497,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/panel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/panel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102686,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425102688,"metadata":{"connectionId":1,"message":{"seq":1498,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102688,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/glob.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/glob.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102689,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102689,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/marshalling.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/marshalling.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/marshalling.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/marshalling.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/marshalling.ts","sourceMapSources":["vs/base/common/marshalling.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102690,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/mime.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/mime.js"},"level":0} {"tag":"dap.send","timestamp":1588425102694,"metadata":{"connectionId":1,"message":{"seq":1499,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/marshalling.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/marshalling.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102695,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102695,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/untitled/common/untitledTextEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel.ts","sourceMapSources":["vs/workbench/services/untitled/common/untitledTextEditorModel.ts"]},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1468","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":3,"executionContextId":1,"hash":"065bda6574dec29f1f30331ba4480a1132487e69","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewContext.js.map","hasSourceURL":false,"isModule":false,"length":1644,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1469","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js","startLine":0,"startColumn":0,"endLine":328,"endColumn":3,"executionContextId":1,"hash":"2622af287c84de3a6f93014c91e6edf92a393d67","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewZones.js.map","hasSourceURL":false,"isModule":false,"length":15189,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1470","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"1e2e6536aa2b63cc7b4fd02e405929eb7f878c84","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"renderingContext.js.map","hasSourceURL":false,"isModule":false,"length":3550,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1471","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"1a7409598c09e31f6273164b0d65ed96666dd7e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewEventDispatcher.js.map","hasSourceURL":false,"isModule":false,"length":3186,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1472","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js","startLine":0,"startColumn":0,"endLine":32,"endColumn":3,"executionContextId":1,"hash":"321824987fdac23c6474860162394287616c9fda","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewLinesViewportData.js.map","hasSourceURL":false,"isModule":false,"length":1835,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1473","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js","startLine":0,"startColumn":0,"endLine":181,"endColumn":3,"executionContextId":1,"hash":"1d90ac8749a3e2a337638449c869047673d70f97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewEventHandler.js.map","hasSourceURL":false,"isModule":false,"length":6601,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1474","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js","startLine":0,"startColumn":0,"endLine":258,"endColumn":3,"executionContextId":1,"hash":"23e474d0620c2db32f8fa9e492a265fe1466554d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewEvents.js.map","hasSourceURL":false,"isModule":false,"length":11504,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102695,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1475","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js","startLine":0,"startColumn":0,"endLine":226,"endColumn":3,"executionContextId":1,"hash":"34a95079046d89a84f25248b9dab5de842f2901d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"cursorCollection.js.map","hasSourceURL":false,"isModule":false,"length":11604,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1476","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js","startLine":0,"startColumn":0,"endLine":848,"endColumn":3,"executionContextId":1,"hash":"1b2f137c53ce9d314b170ba1c0cb0a155a1f4692","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mouseTarget.js.map","hasSourceURL":false,"isModule":false,"length":44363,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1477","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"378382003274ba444ff1c8d2a339eaa94332eea5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimapTokensColorTracker.js.map","hasSourceURL":false,"isModule":false,"length":2972,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1478","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js","startLine":0,"startColumn":0,"endLine":326,"endColumn":3,"executionContextId":1,"hash":"133ea0d02678f36b2743aff09695343d5f8f29ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewLayout.js.map","hasSourceURL":false,"isModule":false,"length":16010,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1479","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js","startLine":0,"startColumn":0,"endLine":28,"endColumn":3,"executionContextId":1,"hash":"0c9a7d6632702f9c0f893dbfae2fe6bb71578159","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"surroundSelectionCommand.js.map","hasSourceURL":false,"isModule":false,"length":2014,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1480","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js","startLine":0,"startColumn":0,"endLine":1225,"endColumn":3,"executionContextId":1,"hash":"110c40a59fb4198875733efa933496a91c94151b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"splitLinesCollection.js.map","hasSourceURL":false,"isModule":false,"length":61681,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1481","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js","startLine":0,"startColumn":0,"endLine":113,"endColumn":3,"executionContextId":1,"hash":"320562c2459f886a6221311bbf3fbdfe6af1f0c9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewModelDecorations.js.map","hasSourceURL":false,"isModule":false,"length":7068,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1482","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js","startLine":0,"startColumn":0,"endLine":218,"endColumn":3,"executionContextId":1,"hash":"0c253bc6531d0d482821cc0f1161227f6528c570","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"textAreaState.js.map","hasSourceURL":false,"isModule":false,"length":13884,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1483","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js","startLine":0,"startColumn":0,"endLine":49,"endColumn":3,"executionContextId":1,"hash":"1014f0e69bcff68a39576dd9c0fd54dd30d569ed","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"findInputCheckboxes.js.map","hasSourceURL":false,"isModule":false,"length":2615,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1484","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js","startLine":0,"startColumn":0,"endLine":130,"endColumn":3,"executionContextId":1,"hash":"237beb6827b33cc3791aacaaa5f1f4da5b44b21b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionUi.js.map","hasSourceURL":false,"isModule":false,"length":7819,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1485","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js","startLine":0,"startColumn":0,"endLine":197,"endColumn":3,"executionContextId":1,"hash":"13632fe967f1622e3bf9b0e0812b445c287b29fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionModel.js.map","hasSourceURL":false,"isModule":false,"length":9361,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1486","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js","startLine":0,"startColumn":0,"endLine":183,"endColumn":3,"executionContextId":1,"hash":"359be4c2349f53b5205e5d32867fb5b91b74d29c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"foldingRanges.js.map","hasSourceURL":false,"isModule":false,"length":7554,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1487","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":3,"executionContextId":1,"hash":"1d3fdc464a444d5616061e16c492d6da16e52149","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"uint.js.map","hasSourceURL":false,"isModule":false,"length":2562,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1488","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js","startLine":0,"startColumn":0,"endLine":266,"endColumn":3,"executionContextId":1,"hash":"19141168212e324713a9a741a902adff71847ecf","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorPickerWidget.js.map","hasSourceURL":false,"isModule":false,"length":13815,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102697,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.148","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPicker.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.735017,"wallTime":1588425102.613458,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1489","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":3,"executionContextId":1,"hash":"343a964d2f2bab1e23780ac3bed34d90383baa7f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"colorPickerModel.js.map","hasSourceURL":false,"isModule":false,"length":2922,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1490","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js","startLine":0,"startColumn":0,"endLine":509,"endColumn":3,"executionContextId":1,"hash":"088267d7a336ec3b226b465b4b5000846b60e895","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"referencesWidget.js.map","hasSourceURL":false,"isModule":false,"length":27241,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.149","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.739202,"wallTime":1588425102.617642,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1491","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js","startLine":0,"startColumn":0,"endLine":193,"endColumn":3,"executionContextId":1,"hash":"101630f2972ce50c648b5656ae73f4204ad56dc0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"hoverWidgets.js.map","hasSourceURL":false,"isModule":false,"length":7967,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1492","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"108f36242da51b196d0af95ba2dfb36d6ffe51c5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markdownRenderer.js.map","hasSourceURL":false,"isModule":false,"length":5261,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1493","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js","startLine":0,"startColumn":0,"endLine":148,"endColumn":3,"executionContextId":1,"hash":"33f889d4322e0a0f2d062403397c1ecc299b051d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"hoverOperation.js.map","hasSourceURL":false,"isModule":false,"length":6676,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1494","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js","startLine":0,"startColumn":0,"endLine":80,"endColumn":3,"executionContextId":1,"hash":"1ca1cbdb2377059a07fe8b8c427822667c0d602c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"bufferLog.js.map","hasSourceURL":false,"isModule":false,"length":3136,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1495","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js","startLine":0,"startColumn":0,"endLine":235,"endColumn":3,"executionContextId":1,"hash":"0317467f3f3156f06fd500eda24c20944576f56d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"completionModel.js.map","hasSourceURL":false,"isModule":false,"length":10878,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1496","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js","startLine":0,"startColumn":0,"endLine":250,"endColumn":3,"executionContextId":1,"hash":"16e5bef021180e0c6114547324c1055415e688d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"parameterHintsModel.js.map","hasSourceURL":false,"isModule":false,"length":12447,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1497","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js","startLine":0,"startColumn":0,"endLine":68,"endColumn":3,"executionContextId":1,"hash":"11d2b075619f896d69f4412c14ba2b181fc1eced","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"wordDistance.js.map","hasSourceURL":false,"isModule":false,"length":3578,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1498","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":3,"executionContextId":1,"hash":"13665dd0a64432bb03fd5ae3ac6976151a807f48","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extHostRpcService.js.map","hasSourceURL":false,"isModule":false,"length":1170,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102698,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1499","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js","startLine":0,"startColumn":0,"endLine":133,"endColumn":3,"executionContextId":1,"hash":"30c85b20887636f37744ce594c14a1187f5518d1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentModel.js.map","hasSourceURL":false,"isModule":false,"length":7133,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1500","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js","startLine":0,"startColumn":0,"endLine":180,"endColumn":3,"executionContextId":1,"hash":"16370737a45be2b5639fa8ebae5d62877aabf988","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"markdownRenderer.js.map","hasSourceURL":false,"isModule":false,"length":8385,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1501","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":3,"executionContextId":1,"hash":"1e617e199abc1bfe07dd79733178d66c271ff910","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notebookCellTextModel.js.map","hasSourceURL":false,"isModule":false,"length":3149,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1502","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js","startLine":0,"startColumn":0,"endLine":87,"endColumn":3,"executionContextId":1,"hash":"346cfc13667b10be606492722e6f01fd169378eb","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"verticalScrollbar.js.map","hasSourceURL":false,"isModule":false,"length":4799,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1503","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","startLine":0,"startColumn":0,"endLine":85,"endColumn":3,"executionContextId":1,"hash":"0f4ef4fb6280917a1b7d99a1beba47a65f0f8f97","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"horizontalScrollbar.js.map","hasSourceURL":false,"isModule":false,"length":4786,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1504","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js","startLine":0,"startColumn":0,"endLine":2454,"endColumn":3,"executionContextId":1,"hash":"296ac95c60e4424b3aa4a5d039da809d70c6489d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extHostTypes.js.map","hasSourceURL":false,"isModule":false,"length":104670,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1505","url":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js","startLine":0,"startColumn":0,"endLine":310,"endColumn":3,"executionContextId":1,"hash":"22d2150a97183b1811893b2d4055342e4a0e4a3f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scrollable.js.map","hasSourceURL":false,"isModule":false,"length":14276,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1506","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js","startLine":0,"startColumn":0,"endLine":290,"endColumn":3,"executionContextId":1,"hash":"36b0e4aa469b24c11397e0ac3d9e716e468b32b1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"titleControl.js.map","hasSourceURL":false,"isModule":false,"length":19729,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.150","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/titlecontrol.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.7572,"wallTime":1588425102.63564,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1507","url":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js","startLine":0,"startColumn":0,"endLine":554,"endColumn":3,"executionContextId":1,"hash":"393ae8b60f4ca14a72f6dbc8851a7075685611e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"settingsMerge.js.map","hasSourceURL":false,"isModule":false,"length":27542,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1508","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js","startLine":0,"startColumn":0,"endLine":596,"endColumn":3,"executionContextId":1,"hash":"0bb536e239e3a1276640ede3382655e459b571ad","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInputList.js.map","hasSourceURL":false,"isModule":false,"length":30495,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1509","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js","startLine":0,"startColumn":0,"endLine":673,"endColumn":3,"executionContextId":1,"hash":"05ff44849d21d05e6625938a4a0348d61792e7a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breadcrumbsControl.js.map","hasSourceURL":false,"isModule":false,"length":38927,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.151","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/breadcrumbscontrol.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.760923,"wallTime":1588425102.639363,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1510","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js","startLine":0,"startColumn":0,"endLine":98,"endColumn":3,"executionContextId":1,"hash":"0a94d69d41a5b5bf1fa59a24755dea0c267cbd52","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInputBox.js.map","hasSourceURL":false,"isModule":false,"length":4225,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1511","url":"file:///Users/roblou/code/vscode/out/vs/base/common/search.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"34244e9051e04a1973f1c8a16cc5f4dd4862baf1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"search.js.map","hasSourceURL":false,"isModule":false,"length":2906,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1512","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js","startLine":0,"startColumn":0,"endLine":30,"endColumn":3,"executionContextId":1,"hash":"34c3970e2d0141f06458f7d5a62fab096ac5a1a4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"quickInputUtils.js.map","hasSourceURL":false,"isModule":false,"length":1574,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1513","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js","startLine":0,"startColumn":0,"endLine":223,"endColumn":3,"executionContextId":1,"hash":"3a7bcd1a204f4e5f67a54e59ab4d7b802ec44d85","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugSchemas.js.map","hasSourceURL":false,"isModule":false,"length":12287,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102699,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1514","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js","startLine":0,"startColumn":0,"endLine":50,"endColumn":3,"executionContextId":1,"hash":"2074e4004a6d28c11fc987af48e84f2b246f5c3b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentFormActions.js.map","hasSourceURL":false,"isModule":false,"length":2461,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1515","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js","startLine":0,"startColumn":0,"endLine":256,"endColumn":3,"executionContextId":1,"hash":"2312245b3d74bbfb80b286a867bce2875e65f8ba","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"debugger.js.map","hasSourceURL":false,"isModule":false,"length":16265,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1516","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js","startLine":0,"startColumn":0,"endLine":592,"endColumn":3,"executionContextId":1,"hash":"2f042513548f70d969b769ff64b8b9e01154aab9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rawDebugSession.js.map","hasSourceURL":false,"isModule":false,"length":25380,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1517","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js","startLine":0,"startColumn":0,"endLine":438,"endColumn":3,"executionContextId":1,"hash":"19ccd7978f2d98c40e591d60a69dde2b58ea5c9a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentNode.js.map","hasSourceURL":false,"isModule":false,"length":26490,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1518","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js","startLine":0,"startColumn":0,"endLine":21,"endColumn":3,"executionContextId":1,"hash":"02a426388282615f1aad1ed08b1fee944a05eee5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commentContextKeys.js.map","hasSourceURL":false,"isModule":false,"length":1271,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1519","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js","startLine":0,"startColumn":0,"endLine":113,"endColumn":3,"executionContextId":1,"hash":"39f4901a216b58601fbeefcd3b5ec9096c156522","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionRecommendations.js.map","hasSourceURL":false,"isModule":false,"length":8121,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1520","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js","startLine":0,"startColumn":0,"endLine":84,"endColumn":3,"executionContextId":1,"hash":"31e7caa92b15600f5348f1c5bc9d5e817b19b32c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"extensionPoint.js.map","hasSourceURL":false,"isModule":false,"length":4188,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1521","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js","startLine":0,"startColumn":0,"endLine":47,"endColumn":3,"executionContextId":1,"hash":"2f10c1c26e0577a73ed2a5934e0aabe549373f38","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"widgetManager.js.map","hasSourceURL":false,"isModule":false,"length":2008,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1522","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js","startLine":0,"startColumn":0,"endLine":506,"endColumn":3,"executionContextId":1,"hash":"3087c8334ade9ff8241d9e3b4cf40baa1cdfe647","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalLinkManager.js.map","hasSourceURL":false,"isModule":false,"length":28199,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1523","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js","startLine":0,"startColumn":0,"endLine":299,"endColumn":3,"executionContextId":1,"hash":"1d866078457152e714aa58e98ae0cbdd27166f7b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalProcessManager.js.map","hasSourceURL":false,"isModule":false,"length":20132,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1524","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js","startLine":0,"startColumn":0,"endLine":294,"endColumn":3,"executionContextId":1,"hash":"18bfcb296495138604808d86973b343354df9eb1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"commandTrackerAddon.js.map","hasSourceURL":false,"isModule":false,"length":12268,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102700,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1525","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js","startLine":0,"startColumn":0,"endLine":101,"endColumn":3,"executionContextId":1,"hash":"36c3c1a153a4e0cb1eb0889d7ce1207a399db8e4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"navigationModeAddon.js.map","hasSourceURL":false,"isModule":false,"length":4597,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1526","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"0a59dee36596bf83206f1150a43adffb3b362583","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcherIpc.js.map","hasSourceURL":false,"isModule":false,"length":2093,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1527","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":3,"executionContextId":1,"hash":"2ebea9c8986f12e4663a4032171da2864be116c8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcherIpc.js.map","hasSourceURL":false,"isModule":false,"length":2093,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1528","url":"file:///Users/roblou/code/vscode/out/vs/base/node/watcher.js","startLine":0,"startColumn":0,"endLine":164,"endColumn":3,"executionContextId":1,"hash":"3ec9b5647de87fbf56397367887f462e29c6a31d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"watcher.js.map","hasSourceURL":false,"isModule":false,"length":9151,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1529","url":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":3,"executionContextId":1,"hash":"020317956bce7ca976e169933963dedb79baf8a7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"csharpWatcherService.js.map","hasSourceURL":false,"isModule":false,"length":5765,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1530","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js","startLine":0,"startColumn":0,"endLine":104,"endColumn":3,"executionContextId":1,"hash":"0690b29b56d0574862392a3641a28c64410d7741","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariableInfoWidget.js.map","hasSourceURL":false,"isModule":false,"length":6266,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1531","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js","startLine":0,"startColumn":0,"endLine":402,"endColumn":3,"executionContextId":1,"hash":"08fbd2822dc89a8e42c3789330024ded1bca704e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"notificationsViewer.js.map","hasSourceURL":false,"isModule":false,"length":24017,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1532","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js","startLine":0,"startColumn":0,"endLine":57,"endColumn":3,"executionContextId":1,"hash":"3abfe62a7575c1780e889eca7ec00846166c7b2f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"sizeObserver.js.map","hasSourceURL":false,"isModule":false,"length":2671,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1533","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","startLine":0,"startColumn":0,"endLine":385,"endColumn":3,"executionContextId":1,"hash":"356a88df74debcb131a7d81ac6a461633cfadaa3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rbTreeBase.js.map","hasSourceURL":false,"isModule":false,"length":13518,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1534","url":"file:///Users/roblou/code/vscode/out/vs/base/node/macAddress.js","startLine":0,"startColumn":0,"endLine":63,"endColumn":3,"executionContextId":1,"hash":"0f568b57444a6b0f300ca4b86ba3c88708002609","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"macAddress.js.map","hasSourceURL":false,"isModule":false,"length":2683,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1535","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","startLine":0,"startColumn":0,"endLine":288,"endColumn":3,"executionContextId":1,"hash":"3acc4b7d0856ea8381dc7795b7d0fe3a0fadc6fd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"baseCellViewModel.js.map","hasSourceURL":false,"isModule":false,"length":13322,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.147","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.814691,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.147","timestamp":547784.814756,"dataLength":1102,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.147","timestamp":547784.814945,"encodedDataLength":1102,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.148","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.818671,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPicker.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.148","timestamp":547784.818731,"dataLength":2396,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.148","timestamp":547784.818787,"encodedDataLength":2396,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.149","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.819177,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.149","timestamp":547784.819262,"dataLength":1392,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.149","timestamp":547784.819355,"encodedDataLength":1392,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.150","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.819828,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/titlecontrol.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.150","timestamp":547784.819897,"dataLength":3126,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102701,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.150","timestamp":547784.820041,"encodedDataLength":3126,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102702,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.151","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.820861,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/breadcrumbscontrol.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102702,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.151","timestamp":547784.820974,"dataLength":2164,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102702,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.151","timestamp":547784.821026,"encodedDataLength":2164,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425102702,"metadata":{"connectionId":1,"message":{"seq":1500,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js","sourceReference":1348518699}}}},"level":0} {"tag":"dap.send","timestamp":1588425102702,"metadata":{"connectionId":1,"message":{"seq":1501,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/untitled/common/untitledTextEditorModel.js","sourceReference":528710708}}}},"level":0} {"tag":"dap.send","timestamp":1588425102702,"metadata":{"connectionId":1,"message":{"seq":1502,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/glob.js","path":"/Users/roblou/code/vscode/out/vs/base/common/glob.js","sourceReference":1893808322}}}},"level":0} {"tag":"dap.send","timestamp":1588425102702,"metadata":{"connectionId":1,"message":{"seq":1503,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/mime.js","path":"/Users/roblou/code/vscode/out/vs/base/common/mime.js","sourceReference":91662577}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102704,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js"},"level":0} {"tag":"dap.send","timestamp":1588425102705,"metadata":{"connectionId":1,"message":{"seq":1504,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102705,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102705,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/modeServiceImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/modeServiceImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/modeServiceImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/modeServiceImpl.ts","sourceMapSources":["vs/editor/common/services/modeServiceImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102705,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102706,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js"},"level":0} {"tag":"dap.send","timestamp":1588425102706,"metadata":{"connectionId":1,"message":{"seq":1505,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/modeServiceImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/modeServiceImpl.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102706,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102706,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/glob.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/glob.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/glob.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/glob.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/glob.ts","sourceMapSources":["vs/base/common/glob.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102707,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js"},"level":0} {"tag":"dap.send","timestamp":1588425102707,"metadata":{"connectionId":1,"message":{"seq":1506,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/glob.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/glob.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102707,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102707,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/mime.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/mime.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/mime.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/mime.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/mime.ts","sourceMapSources":["vs/base/common/mime.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102708,"metadata":{"connectionId":1,"message":{"seq":1507,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js","sourceReference":413536546}}}},"level":0} {"tag":"dap.send","timestamp":1588425102708,"metadata":{"connectionId":1,"message":{"seq":1508,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/mime.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/mime.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102708,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js"},"level":0} {"tag":"dap.send","timestamp":1588425102709,"metadata":{"connectionId":1,"message":{"seq":1509,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js","sourceReference":929629167}}}},"level":0} {"tag":"dap.send","timestamp":1588425102709,"metadata":{"connectionId":1,"message":{"seq":1510,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js","sourceReference":928622942}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102709,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102709,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/colorThemeData.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeData.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeData.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeData.ts","sourceMapSources":["vs/workbench/services/themes/common/colorThemeData.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102709,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102709,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/browser/fileIconThemeData.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/fileIconThemeData.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.ts","sourceMapSources":["vs/workbench/services/themes/browser/fileIconThemeData.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102710,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js"},"level":0} {"tag":"dap.send","timestamp":1588425102711,"metadata":{"connectionId":1,"message":{"seq":1511,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeData.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeData.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102711,"metadata":{"connectionId":1,"message":{"seq":1512,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102711,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102711,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/fileIconThemeSchema.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/fileIconThemeSchema.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.ts","sourceMapSources":["vs/workbench/services/themes/common/fileIconThemeSchema.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102711,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102711,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/themeExtensionPoints.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.ts","sourceMapSources":["vs/workbench/services/themes/common/themeExtensionPoints.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102712,"metadata":{"connectionId":1,"message":{"seq":1513,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeExtensionPoints.js","sourceReference":921533255}}}},"level":0} {"tag":"dap.send","timestamp":1588425102712,"metadata":{"connectionId":1,"message":{"seq":1514,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js","sourceReference":1411854765}}}},"level":0} {"tag":"dap.send","timestamp":1588425102712,"metadata":{"connectionId":1,"message":{"seq":1515,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102712,"metadata":{"connectionId":1,"message":{"seq":1516,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102712,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102713,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102713,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/browser/productIconThemeData.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/browser/productIconThemeData.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.ts","sourceMapSources":["vs/workbench/services/themes/browser/productIconThemeData.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102714,"metadata":{"connectionId":1,"message":{"seq":1517,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102714,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js"},"level":0} {"tag":"dap.send","timestamp":1588425102714,"metadata":{"connectionId":1,"message":{"seq":1518,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js","sourceReference":1887318962}}}},"level":0} {"tag":"dap.send","timestamp":1588425102714,"metadata":{"connectionId":1,"message":{"seq":1519,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js","sourceReference":945594628}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102715,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102715,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/colorThemeSchema.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/colorThemeSchema.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.ts","sourceMapSources":["vs/workbench/services/themes/common/colorThemeSchema.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102715,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/notifications.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/notifications.js"},"level":0} {"tag":"dap.send","timestamp":1588425102716,"metadata":{"connectionId":1,"message":{"seq":1520,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102716,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102716,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/productIconThemeSchema.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/productIconThemeSchema.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.ts","sourceMapSources":["vs/workbench/services/themes/common/productIconThemeSchema.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102716,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js"},"level":0} {"tag":"dap.send","timestamp":1588425102717,"metadata":{"connectionId":1,"message":{"seq":1521,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js","sourceReference":2146639272}}}},"level":0} {"tag":"dap.send","timestamp":1588425102717,"metadata":{"connectionId":1,"message":{"seq":1522,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102717,"metadata":{"connectionId":1,"message":{"seq":1523,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/notifications.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/notifications.js","sourceReference":1707398163}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102718,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102718,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102718,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/themeConfiguration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeConfiguration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeConfiguration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeConfiguration.ts","sourceMapSources":["vs/workbench/services/themes/common/themeConfiguration.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102719,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102719,"metadata":{"connectionId":1,"message":{"seq":1524,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js","sourceReference":1952041765}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1536","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js","startLine":0,"startColumn":0,"endLine":158,"endColumn":3,"executionContextId":1,"hash":"3e50067aa986c18f57e795d85fbfb7775ec614b5","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"editorDom.js.map","hasSourceURL":false,"isModule":false,"length":7234,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1537","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js","startLine":0,"startColumn":0,"endLine":438,"endColumn":3,"executionContextId":1,"hash":"06ce85ad00fd1ecb353b2aa59da17fb43e6ea12d","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"mouseHandler.js.map","hasSourceURL":false,"isModule":false,"length":23067,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1538","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js","startLine":0,"startColumn":0,"endLine":13,"endColumn":3,"executionContextId":1,"hash":"06e25bc277a5c8371574c53d0b20169929a57151","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"dynamicViewOverlay.js.map","hasSourceURL":false,"isModule":false,"length":847,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1539","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js","startLine":0,"startColumn":0,"endLine":464,"endColumn":3,"executionContextId":1,"hash":"213803f9a48a40c771bc3b9e0d613a7241dd066f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewLayer.js.map","hasSourceURL":false,"isModule":false,"length":21686,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1540","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js","startLine":0,"startColumn":0,"endLine":102,"endColumn":3,"executionContextId":1,"hash":"3781290a179add6733cd02eb30f7029031df6914","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"globalMouseMoveMonitor.js.map","hasSourceURL":false,"isModule":false,"length":5259,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1541","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js","startLine":0,"startColumn":0,"endLine":526,"endColumn":3,"executionContextId":1,"hash":"29776da89878d054318153a8964d116e673d4f06","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewLine.js.map","hasSourceURL":false,"isModule":false,"length":28044,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1542","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"188c10050e696ef23a7a665d7827e5543812f955","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rgba.js.map","hasSourceURL":false,"isModule":false,"length":1582,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1543","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","startLine":0,"startColumn":0,"endLine":136,"endColumn":3,"executionContextId":1,"hash":"1ccd1078099e07f204abf277aff0d2c0362d323c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimapCharRendererFactory.js.map","hasSourceURL":false,"isModule":false,"length":7883,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1544","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js","startLine":0,"startColumn":0,"endLine":161,"endColumn":3,"executionContextId":1,"hash":"02fbc4032b6418b01a7d55fc29309dfa4467ab75","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"viewCursor.js.map","hasSourceURL":false,"isModule":false,"length":8665,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102719,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1545","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js","startLine":0,"startColumn":0,"endLine":91,"endColumn":3,"executionContextId":1,"hash":"1953c57d57a3f55645d01916aa180af25ddd3027","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"oneCursor.js.map","hasSourceURL":false,"isModule":false,"length":6008,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425102719,"metadata":{"connectionId":1,"message":{"seq":1525,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeConfiguration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeConfiguration.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102720,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102720,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/notifications.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/notifications.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/notifications.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/notifications.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/notifications.ts","sourceMapSources":["vs/workbench/common/notifications.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102720,"metadata":{"connectionId":1,"message":{"seq":1526,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js","sourceReference":1748174001}}}},"level":0} {"tag":"dap.send","timestamp":1588425102720,"metadata":{"connectionId":1,"message":{"seq":1527,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/notifications.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/notifications.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102720,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102721,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts","sourceMapSources":["vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102723,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102739,"metadata":{"connectionId":1,"message":{"seq":1528,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102739,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102739,"metadata":{"connectionId":1,"message":{"seq":1529,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js","sourceReference":687644976}}}},"level":0} {"tag":"dap.send","timestamp":1588425102740,"metadata":{"connectionId":1,"message":{"seq":1530,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js","sourceReference":1971630076}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1546","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js","startLine":0,"startColumn":0,"endLine":176,"endColumn":3,"executionContextId":1,"hash":"3d70043e07b7b21a4dddd67e05aed3513bcd6100","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"codeActionMenu.js.map","hasSourceURL":false,"isModule":false,"length":10084,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1547","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js","startLine":0,"startColumn":0,"endLine":751,"endColumn":3,"executionContextId":1,"hash":"123b79d186c7b4722f11b66a2989007a114d7823","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"linesLayout.js.map","hasSourceURL":false,"isModule":false,"length":36436,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1548","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js","startLine":0,"startColumn":0,"endLine":218,"endColumn":3,"executionContextId":1,"hash":"025c0c29985234d23fe4c20d7a360cf36b246c56","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"lightBulbWidget.js.map","hasSourceURL":false,"isModule":false,"length":11888,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.152","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.843279,"wallTime":1588425102.721716,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1549","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js","startLine":0,"startColumn":0,"endLine":217,"endColumn":3,"executionContextId":1,"hash":"2853cc1c4bbd55595d4f711876d7eac047127e9e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"referencesTree.js.map","hasSourceURL":false,"isModule":false,"length":10810,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1550","url":"file:///Users/roblou/code/vscode/out/vs/base/common/insane/insane.js","startLine":0,"startColumn":0,"endLine":475,"endColumn":3,"executionContextId":1,"hash":"2dd782f543f6f3f352c01b0a6ae78b0978026da8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12538,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1551","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js","startLine":0,"startColumn":0,"endLine":197,"endColumn":3,"executionContextId":1,"hash":"0224ad312c3aea995d91b4785928817c4692eddd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"abstractScrollbar.js.map","hasSourceURL":false,"isModule":false,"length":9913,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1552","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js","startLine":0,"startColumn":0,"endLine":76,"endColumn":3,"executionContextId":1,"hash":"2f094c7f87f9ecbf4f6aac7e4ae4ab9062bd093b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scrollbarArrow.js.map","hasSourceURL":false,"isModule":false,"length":3940,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1553","url":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"3115e9cd117829a522abbb2a9e85a4cb3e41ecfe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"content.js.map","hasSourceURL":false,"isModule":false,"length":2437,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1554","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js","startLine":0,"startColumn":0,"endLine":295,"endColumn":3,"executionContextId":1,"hash":"3d523deca4f505730ba9b0bc1fe299b82e3249e3","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breadcrumbs.js.map","hasSourceURL":false,"isModule":false,"length":15122,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1555","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":3,"executionContextId":1,"hash":"2042966b322c85505bdfae9c30be946a02f0ef0b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scrollbarState.js.map","hasSourceURL":false,"isModule":false,"length":6886,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1556","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js","startLine":0,"startColumn":0,"endLine":293,"endColumn":3,"executionContextId":1,"hash":"1a668c2f956102263afe73ab3f079e754c742ef0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breadcrumbsWidget.js.map","hasSourceURL":false,"isModule":false,"length":12796,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.153","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.css","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547784.850417,"wallTime":1588425102.728853,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"BrowserCSSLoader._insertLinkNode","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":55,"columnNumber":21},{"functionName":"BrowserCSSLoader.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":90,"columnNumber":17},{"functionName":"CSSPlugin.load","scriptId":"98","url":"file:///Users/roblou/code/vscode/out/vs/css.js","lineNumber":101,"columnNumber":28},{"functionName":"ModuleManager._loadPluginDependency","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1564,"columnNumber":19},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1613,"columnNumber":33},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}},"type":"Stylesheet","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1557","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js","startLine":0,"startColumn":0,"endLine":74,"endColumn":3,"executionContextId":1,"hash":"06bc08616301f16b787989cfa74595a6083f337c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"reactionsAction.js.map","hasSourceURL":false,"isModule":false,"length":3504,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1558","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js","startLine":0,"startColumn":0,"endLine":268,"endColumn":3,"executionContextId":1,"hash":"118386aa8086a61d7998de820930d6ee450ef85e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breadcrumbsModel.js.map","hasSourceURL":false,"isModule":false,"length":14488,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1559","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js","startLine":0,"startColumn":0,"endLine":451,"endColumn":3,"executionContextId":1,"hash":"19a48b335ed40bac3d337d0d524a162038d91825","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"breadcrumbsPicker.js.map","hasSourceURL":false,"isModule":false,"length":23983,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1560","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js","startLine":0,"startColumn":0,"endLine":82,"endColumn":3,"executionContextId":1,"hash":"0c9104571dd2582a1458538376e35b5f0039d60c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalProtocolLinkProvider.js.map","hasSourceURL":false,"isModule":false,"length":5100,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1561","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js","startLine":0,"startColumn":0,"endLine":102,"endColumn":3,"executionContextId":1,"hash":"0470c5eb9f017b5a3586d8057d3cd97163c41208","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalWordLinkProvider.js.map","hasSourceURL":false,"isModule":false,"length":6542,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1562","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js","startLine":0,"startColumn":0,"endLine":175,"endColumn":3,"executionContextId":1,"hash":"33644ed7858ca28e56a1c9d7b155fcdc3ef3c6e7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalValidatedLocalLinkProvider.js.map","hasSourceURL":false,"isModule":false,"length":11445,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1563","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js","startLine":0,"startColumn":0,"endLine":141,"endColumn":3,"executionContextId":1,"hash":"33e8da44989258d826b03f097c63861270bf545b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalProcessExtHostProxy.js.map","hasSourceURL":false,"isModule":false,"length":7839,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1564","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js","startLine":0,"startColumn":0,"endLine":111,"endColumn":3,"executionContextId":1,"hash":"0844cd488ac716643a1e38f2b82c9e8d10b6276f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalHoverWidget.js.map","hasSourceURL":false,"isModule":false,"length":6486,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.152","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.855976,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.152","timestamp":547784.856026,"dataLength":674,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.152","timestamp":547784.856076,"encodedDataLength":674,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.153","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547784.856472,"type":"Stylesheet","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.css","status":200,"statusText":"OK","headers":{"Content-Type":"text/css"},"mimeType":"text/css","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.153","timestamp":547784.856562,"dataLength":937,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102740,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.153","timestamp":547784.856613,"encodedDataLength":937,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102741,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1565","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js","startLine":0,"startColumn":0,"endLine":20,"endColumn":3,"executionContextId":1,"hash":"3ea84e2726eabab22fcf3dfb9a45e98d7b97216c","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"widgets.js.map","hasSourceURL":false,"isModule":false,"length":1282,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102741,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1566","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js","startLine":0,"startColumn":0,"endLine":243,"endColumn":3,"executionContextId":1,"hash":"251b89511584be7a7986afcf57c5be58629ffb7a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"hoverWidget.js.map","hasSourceURL":false,"isModule":false,"length":14541,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102741,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1567","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js","startLine":0,"startColumn":0,"endLine":99,"endColumn":3,"executionContextId":1,"hash":"321dcd1383e3411a51782ff0bbcdf27f46626976","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"environmentVariableInfo.js.map","hasSourceURL":false,"isModule":false,"length":5683,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102741,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102741,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102741,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggest.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggest.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggest.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggest.ts","sourceMapSources":["vs/editor/contrib/suggest/suggest.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102742,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102742,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/keybindingsEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingsEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/keybindingsEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102743,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425102745,"metadata":{"connectionId":1,"message":{"seq":1531,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggest.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggest.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102745,"metadata":{"connectionId":1,"message":{"seq":1532,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102745,"metadata":{"connectionId":1,"message":{"seq":1533,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js","sourceReference":741419856}}}},"level":0} {"tag":"dap.send","timestamp":1588425102745,"metadata":{"connectionId":1,"message":{"seq":1534,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js","sourceReference":2004136729}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102745,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1568","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","startLine":0,"startColumn":0,"endLine":89,"endColumn":3,"executionContextId":1,"hash":"296d67e93dd19ef736b8c12f4080bbae0d728dd2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimapCharRenderer.js.map","hasSourceURL":false,"isModule":false,"length":4616,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102745,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1569","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","startLine":0,"startColumn":0,"endLine":42,"endColumn":3,"executionContextId":1,"hash":"048302fa121e55e447c858b4be3bb9e43ff88e03","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimapCharSheet.js.map","hasSourceURL":false,"isModule":false,"length":2253,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102745,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1570","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js","startLine":0,"startColumn":0,"endLine":133,"endColumn":3,"executionContextId":1,"hash":"116cb53160f72c6b675afc20bd4e6fc25d8d3be0","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"rangeUtil.js.map","hasSourceURL":false,"isModule":false,"length":6694,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102745,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1571","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","startLine":0,"startColumn":0,"endLine":54,"endColumn":3,"executionContextId":1,"hash":"1850290e408d4c632eeb1dad06c7f797248f2c49","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"minimapPreBaked.js.map","hasSourceURL":false,"isModule":false,"length":3808,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102745,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102746,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102746,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/preferencesActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/preferencesActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102746,"metadata":{"connectionId":1,"message":{"seq":1535,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js","sourceReference":1849311736}}}},"level":0} {"tag":"dap.send","timestamp":1588425102747,"metadata":{"connectionId":1,"message":{"seq":1536,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102747,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102747,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/preferencesEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/preferencesEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102747,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102747,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102747,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/common/preferences.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferences.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferences.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferences.ts","sourceMapSources":["vs/workbench/contrib/preferences/common/preferences.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102748,"metadata":{"connectionId":1,"message":{"seq":1537,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102748,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/htmlContent.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/htmlContent.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102748,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102749,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/common/preferencesContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/preferencesContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution.ts","sourceMapSources":["vs/workbench/contrib/preferences/common/preferencesContribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102749,"metadata":{"connectionId":1,"message":{"seq":1538,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferences.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferences.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102749,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102749,"metadata":{"connectionId":1,"message":{"seq":1539,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102749,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102749,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/settingsEditor2.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/settingsEditor2.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102750,"metadata":{"connectionId":1,"message":{"seq":1540,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsEditor2.js","sourceReference":1812310633}}}},"level":0} {"tag":"dap.send","timestamp":1588425102750,"metadata":{"connectionId":1,"message":{"seq":1541,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js","sourceReference":2133677916}}}},"level":0} {"tag":"dap.send","timestamp":1588425102750,"metadata":{"connectionId":1,"message":{"seq":1542,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/htmlContent.js","path":"/Users/roblou/code/vscode/out/vs/base/common/htmlContent.js","sourceReference":1278218624}}}},"level":0} {"tag":"dap.send","timestamp":1588425102750,"metadata":{"connectionId":1,"message":{"seq":1543,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102751,"metadata":{"connectionId":1,"message":{"seq":1544,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js","sourceReference":389294321}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102751,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102751,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102751,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/browser/errorTelemetry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/browser/errorTelemetry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/browser/errorTelemetry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/browser/errorTelemetry.ts","sourceMapSources":["vs/platform/telemetry/browser/errorTelemetry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102752,"metadata":{"connectionId":1,"message":{"seq":1545,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/browser/errorTelemetry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/browser/errorTelemetry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102752,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102752,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/htmlContent.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/htmlContent.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/htmlContent.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/htmlContent.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/htmlContent.ts","sourceMapSources":["vs/base/common/htmlContent.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102752,"metadata":{"connectionId":1,"message":{"seq":1546,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js","sourceReference":105274067}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102752,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102753,"metadata":{"connectionId":1,"message":{"seq":1547,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/htmlContent.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/htmlContent.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102753,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102753,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/browser/quickInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickInput.ts","sourceMapSources":["vs/platform/quickinput/browser/quickInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102754,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js"},"level":0} {"tag":"dap.send","timestamp":1588425102754,"metadata":{"connectionId":1,"message":{"seq":1548,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickInput.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickInput.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102754,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102754,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102754,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/editorExtensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/editorExtensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/editorExtensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/editorExtensions.ts","sourceMapSources":["vs/editor/browser/editorExtensions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102755,"metadata":{"connectionId":1,"message":{"seq":1549,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js","sourceReference":385479059}}}},"level":0} {"tag":"dap.send","timestamp":1588425102755,"metadata":{"connectionId":1,"message":{"seq":1550,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js","sourceReference":1028311865}}}},"level":0} {"tag":"dap.send","timestamp":1588425102755,"metadata":{"connectionId":1,"message":{"seq":1551,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/editorExtensions.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/editorExtensions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102755,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102755,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/views/common/viewContainerModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/views/common/viewContainerModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/views/common/viewContainerModel.ts","sourceMapSources":["vs/workbench/services/views/common/viewContainerModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102756,"metadata":{"connectionId":1,"message":{"seq":1552,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js","sourceReference":1011466815}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102756,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js"},"level":0} {"tag":"dap.send","timestamp":1588425102756,"metadata":{"connectionId":1,"message":{"seq":1553,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/views/common/viewContainerModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/views/common/viewContainerModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102756,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102756,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/common/smartSnippetInserter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/common/smartSnippetInserter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter.ts","sourceMapSources":["vs/workbench/contrib/preferences/common/smartSnippetInserter.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102758,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102758,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/keybindingWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/keybindingWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/keybindingWidgets.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102759,"metadata":{"connectionId":1,"message":{"seq":1554,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102759,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102759,"metadata":{"connectionId":1,"message":{"seq":1555,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js","sourceReference":166344039}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102759,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102760,"metadata":{"connectionId":1,"message":{"seq":1556,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102760,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102761,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js"},"level":0} {"tag":"dap.send","timestamp":1588425102761,"metadata":{"connectionId":1,"message":{"seq":1557,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js","sourceReference":984489998}}}},"level":0} {"tag":"dap.send","timestamp":1588425102761,"metadata":{"connectionId":1,"message":{"seq":1558,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js","sourceReference":1303878693}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102761,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102761,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorWidgets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102762,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js"},"level":0} {"tag":"dap.send","timestamp":1588425102762,"metadata":{"connectionId":1,"message":{"seq":1559,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102763,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102763,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102763,"metadata":{"connectionId":1,"message":{"seq":1560,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js","sourceReference":1134400079}}}},"level":0} {"tag":"dap.send","timestamp":1588425102763,"metadata":{"connectionId":1,"message":{"seq":1561,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js","sourceReference":112649001}}}},"level":0} {"tag":"dap.send","timestamp":1588425102763,"metadata":{"connectionId":1,"message":{"seq":1562,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","sourceReference":1919039229}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102763,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102763,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102763,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebookService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebookService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102763,"metadata":{"connectionId":1,"message":{"seq":1563,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102764,"metadata":{"connectionId":1,"message":{"seq":1564,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102764,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102764,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/common/notebookCommon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookCommon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.ts","sourceMapSources":["vs/workbench/contrib/notebook/common/notebookCommon.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102765,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102765,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/contrib/format/formatting.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/contrib/format/formatting.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102765,"metadata":{"connectionId":1,"message":{"seq":1565,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js","sourceReference":2026509775}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102765,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102765,"metadata":{"connectionId":1,"message":{"seq":1566,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102765,"metadata":{"connectionId":1,"message":{"seq":1567,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102765,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102766,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102767,"metadata":{"connectionId":1,"message":{"seq":1568,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102767,"metadata":{"connectionId":1,"message":{"seq":1569,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js","sourceReference":261723472}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102767,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102768,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102768,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102768,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js"},"level":0} {"tag":"dap.send","timestamp":1588425102768,"metadata":{"connectionId":1,"message":{"seq":1570,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102769,"metadata":{"connectionId":1,"message":{"seq":1571,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js","sourceReference":160892138}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102769,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102769,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102769,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/common/customEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.ts","sourceMapSources":["vs/workbench/contrib/customEditor/common/customEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102770,"metadata":{"connectionId":1,"message":{"seq":1572,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102770,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js"},"level":0} {"tag":"dap.send","timestamp":1588425102770,"metadata":{"connectionId":1,"message":{"seq":1573,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js","sourceReference":1699624239}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102771,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102771,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102771,"metadata":{"connectionId":1,"message":{"seq":1574,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js","sourceReference":263762188}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102774,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425102775,"metadata":{"connectionId":1,"message":{"seq":1575,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/streamTransform.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102775,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102775,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102775,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425102775,"metadata":{"connectionId":1,"message":{"seq":1576,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","sourceReference":1052169322}}}},"level":0} {"tag":"dap.send","timestamp":1588425102775,"metadata":{"connectionId":1,"message":{"seq":1577,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js","sourceReference":1419573782}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102776,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102776,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102776,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/contrib/find/findController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/find/findController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/contrib/find/findController.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102776,"metadata":{"connectionId":1,"message":{"seq":1578,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102777,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102777,"metadata":{"connectionId":1,"message":{"seq":1579,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102777,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102777,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102777,"metadata":{"connectionId":1,"message":{"seq":1580,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js","sourceReference":31909066}}}},"level":0} {"tag":"dap.send","timestamp":1588425102777,"metadata":{"connectionId":1,"message":{"seq":1581,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js","sourceReference":270756859}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102778,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js"},"level":0} {"tag":"dap.send","timestamp":1588425102778,"metadata":{"connectionId":1,"message":{"seq":1582,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102778,"metadata":{"connectionId":1,"message":{"seq":1583,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js","sourceReference":1927696092}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102779,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102779,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102779,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/common/quickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/common/quickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickAccess.ts","sourceMapSources":["vs/platform/quickinput/common/quickAccess.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102779,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102779,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/quickaccess/browser/viewQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/quickaccess/browser/viewQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102780,"metadata":{"connectionId":1,"message":{"seq":1584,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js","sourceReference":2024789702}}}},"level":0} {"tag":"dap.send","timestamp":1588425102780,"metadata":{"connectionId":1,"message":{"seq":1585,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js","sourceReference":552569752}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102780,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js"},"level":0} {"tag":"dap.send","timestamp":1588425102780,"metadata":{"connectionId":1,"message":{"seq":1586,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/common/quickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102780,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102780,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102780,"metadata":{"connectionId":1,"message":{"seq":1587,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102781,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/filters.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/filters.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102781,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102781,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/logs/common/logsActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsActions.ts","sourceMapSources":["vs/workbench/contrib/logs/common/logsActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102782,"metadata":{"connectionId":1,"message":{"seq":1588,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102782,"metadata":{"connectionId":1,"message":{"seq":1589,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js","sourceReference":500112270}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102782,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102782,"metadata":{"connectionId":1,"message":{"seq":1590,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102783,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102783,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/logs/common/logConstants.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logConstants.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logConstants.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logConstants.ts","sourceMapSources":["vs/workbench/contrib/logs/common/logConstants.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102783,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102784,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102784,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/browser/helpQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/helpQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.ts","sourceMapSources":["vs/platform/quickinput/browser/helpQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102784,"metadata":{"connectionId":1,"message":{"seq":1591,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logConstants.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logConstants.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102784,"metadata":{"connectionId":1,"message":{"seq":1592,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/filters.js","path":"/Users/roblou/code/vscode/out/vs/base/common/filters.js","sourceReference":208969438}}}},"level":0} {"tag":"dap.send","timestamp":1588425102784,"metadata":{"connectionId":1,"message":{"seq":1593,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js","sourceReference":1320920060}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102784,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js"},"level":0} {"tag":"dap.send","timestamp":1588425102784,"metadata":{"connectionId":1,"message":{"seq":1594,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102784,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102784,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/logs/common/logsDataCleaner.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/logs/common/logsDataCleaner.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsDataCleaner.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsDataCleaner.ts","sourceMapSources":["vs/workbench/contrib/logs/common/logsDataCleaner.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102785,"metadata":{"connectionId":1,"message":{"seq":1595,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsDataCleaner.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/logs/common/logsDataCleaner.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102786,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js"},"level":0} {"tag":"dap.send","timestamp":1588425102786,"metadata":{"connectionId":1,"message":{"seq":1596,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js","sourceReference":137650180}}}},"level":0} {"tag":"dap.send","timestamp":1588425102786,"metadata":{"connectionId":1,"message":{"seq":1597,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js","sourceReference":1531288237}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102786,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102786,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/filters.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/filters.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/filters.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/filters.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/filters.ts","sourceMapSources":["vs/base/common/filters.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102786,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102786,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/editors/binaryFileEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.ts","sourceMapSources":["vs/workbench/contrib/files/browser/editors/binaryFileEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102787,"metadata":{"connectionId":1,"message":{"seq":1598,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/filters.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/filters.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102787,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102787,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/editors/textFileEditorTracker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.ts","sourceMapSources":["vs/workbench/contrib/files/browser/editors/textFileEditorTracker.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102787,"metadata":{"connectionId":1,"message":{"seq":1599,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102788,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102788,"metadata":{"connectionId":1,"message":{"seq":1600,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js","sourceReference":875732753}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102788,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102788,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts","sourceMapSources":["vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102788,"metadata":{"connectionId":1,"message":{"seq":1601,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102789,"metadata":{"connectionId":1,"message":{"seq":1602,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102789,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102789,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/workspaceWatcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/workspaceWatcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/workspaceWatcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/workspaceWatcher.ts","sourceMapSources":["vs/workbench/contrib/files/common/workspaceWatcher.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102789,"metadata":{"connectionId":1,"message":{"seq":1603,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js","sourceReference":166739655}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102790,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js"},"level":0} {"tag":"dap.send","timestamp":1588425102790,"metadata":{"connectionId":1,"message":{"seq":1604,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/workspaceWatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/workspaceWatcher.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102790,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102791,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102791,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/explorerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerService.ts","sourceMapSources":["vs/workbench/contrib/files/common/explorerService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102791,"metadata":{"connectionId":1,"message":{"seq":1605,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js","sourceReference":571616687}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102791,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js"},"level":0} {"tag":"dap.send","timestamp":1588425102792,"metadata":{"connectionId":1,"message":{"seq":1606,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102792,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102792,"metadata":{"connectionId":1,"message":{"seq":1607,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js","sourceReference":1162540423}}}},"level":0} {"tag":"dap.send","timestamp":1588425102792,"metadata":{"connectionId":1,"message":{"seq":1608,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js","sourceReference":90898424}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102793,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102793,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/output/common/output.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/output/common/output.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/output/common/output.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/output/common/output.ts","sourceMapSources":["vs/workbench/services/output/common/output.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102793,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102793,"metadata":{"connectionId":1,"message":{"seq":1609,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/output/common/output.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/output/common/output.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102794,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102794,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/config/commonEditorConfig.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/config/commonEditorConfig.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/config/commonEditorConfig.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/config/commonEditorConfig.ts","sourceMapSources":["vs/editor/common/config/commonEditorConfig.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102794,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102794,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/dirtyFilesIndicator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/dirtyFilesIndicator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.ts","sourceMapSources":["vs/workbench/contrib/files/common/dirtyFilesIndicator.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102794,"metadata":{"connectionId":1,"message":{"seq":1610,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/config/commonEditorConfig.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/config/commonEditorConfig.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102795,"metadata":{"connectionId":1,"message":{"seq":1611,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102795,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102795,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/views/explorerView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.ts","sourceMapSources":["vs/workbench/contrib/files/browser/views/explorerView.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102795,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js"},"level":0} {"tag":"dap.send","timestamp":1588425102796,"metadata":{"connectionId":1,"message":{"seq":1612,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js","sourceReference":1437417121}}}},"level":0} {"tag":"dap.send","timestamp":1588425102796,"metadata":{"connectionId":1,"message":{"seq":1613,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102796,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102797,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102797,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/views/openEditorsView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts","sourceMapSources":["vs/workbench/contrib/files/browser/views/openEditorsView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102797,"metadata":{"connectionId":1,"message":{"seq":1614,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/openEditorsView.js","sourceReference":999566653}}}},"level":0} {"tag":"dap.send","timestamp":1588425102797,"metadata":{"connectionId":1,"message":{"seq":1615,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js","sourceReference":1197070465}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102797,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102798,"metadata":{"connectionId":1,"message":{"seq":1616,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102798,"metadata":{"connectionId":1,"message":{"seq":1617,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js","sourceReference":2032565740}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102798,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102799,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102799,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/backup/common/backupRestorer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupRestorer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupRestorer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupRestorer.ts","sourceMapSources":["vs/workbench/contrib/backup/common/backupRestorer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102799,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425102800,"metadata":{"connectionId":1,"message":{"seq":1618,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupRestorer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupRestorer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102800,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102800,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102800,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/views/emptyView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/emptyView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.ts","sourceMapSources":["vs/workbench/contrib/files/browser/views/emptyView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102801,"metadata":{"connectionId":1,"message":{"seq":1619,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102801,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102801,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102801,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/fileActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.ts","sourceMapSources":["vs/workbench/contrib/files/browser/fileActions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102801,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102801,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorCommands.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102808,"metadata":{"connectionId":1,"message":{"seq":1620,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102809,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102809,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/fileCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileCommands.ts","sourceMapSources":["vs/workbench/contrib/files/browser/fileCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102810,"metadata":{"connectionId":1,"message":{"seq":1621,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorCommands.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102810,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js"},"level":0} {"tag":"dap.send","timestamp":1588425102810,"metadata":{"connectionId":1,"message":{"seq":1622,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileActions.js","sourceReference":1002456311}}}},"level":0} {"tag":"dap.send","timestamp":1588425102810,"metadata":{"connectionId":1,"message":{"seq":1623,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js","sourceReference":1012744022}}}},"level":0} {"tag":"dap.send","timestamp":1588425102810,"metadata":{"connectionId":1,"message":{"seq":1624,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js","sourceReference":793731597}}}},"level":0} {"tag":"dap.send","timestamp":1588425102810,"metadata":{"connectionId":1,"message":{"seq":1625,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/fileCommands.js","sourceReference":2139588216}}}},"level":0} {"tag":"dap.send","timestamp":1588425102810,"metadata":{"connectionId":1,"message":{"seq":1626,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js","sourceReference":1699231923}}}},"level":0} {"tag":"dap.send","timestamp":1588425102812,"metadata":{"connectionId":1,"message":{"seq":1627,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/fileCommands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102812,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102812,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.ts","sourceMapSources":["vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102812,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102813,"metadata":{"connectionId":1,"message":{"seq":1628,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js","sourceReference":812381452}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102813,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js"},"level":0} {"tag":"dap.send","timestamp":1588425102814,"metadata":{"connectionId":1,"message":{"seq":1629,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102814,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102815,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102815,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/replaceContributions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceContributions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceContributions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceContributions.ts","sourceMapSources":["vs/workbench/contrib/search/browser/replaceContributions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102815,"metadata":{"connectionId":1,"message":{"seq":1630,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js","sourceReference":1980021472}}}},"level":0} {"tag":"dap.send","timestamp":1588425102815,"metadata":{"connectionId":1,"message":{"seq":1631,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js","sourceReference":545675084}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102816,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425102816,"metadata":{"connectionId":1,"message":{"seq":1632,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceContributions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceContributions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102817,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102817,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts","sourceMapSources":["vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102818,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102818,"metadata":{"connectionId":1,"message":{"seq":1633,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js","sourceReference":1700720818}}}},"level":0} {"tag":"dap.send","timestamp":1588425102818,"metadata":{"connectionId":1,"message":{"seq":1634,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102819,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102819,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/findModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/findModel.ts","sourceMapSources":["vs/editor/contrib/find/findModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102819,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102820,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102820,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/constants.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/constants.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/constants.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/constants.ts","sourceMapSources":["vs/workbench/contrib/search/common/constants.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102820,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102820,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/searchEditor/browser/constants.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/constants.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants.ts","sourceMapSources":["vs/workbench/contrib/searchEditor/browser/constants.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102820,"metadata":{"connectionId":1,"message":{"seq":1635,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102820,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js"},"level":0} {"tag":"dap.send","timestamp":1588425102821,"metadata":{"connectionId":1,"message":{"seq":1636,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js","sourceReference":1726419442}}}},"level":0} {"tag":"dap.send","timestamp":1588425102821,"metadata":{"connectionId":1,"message":{"seq":1637,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js","sourceReference":1009137344}}}},"level":0} {"tag":"dap.send","timestamp":1588425102821,"metadata":{"connectionId":1,"message":{"seq":1638,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/constants.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/constants.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102821,"metadata":{"connectionId":1,"message":{"seq":1639,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102822,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102823,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102823,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/searchWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchWidget.ts","sourceMapSources":["vs/workbench/contrib/search/browser/searchWidget.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102823,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102823,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/searchHistoryService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchHistoryService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService.ts","sourceMapSources":["vs/workbench/contrib/search/common/searchHistoryService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102823,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425102823,"metadata":{"connectionId":1,"message":{"seq":1640,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js","sourceReference":126867712}}}},"level":0} {"tag":"dap.send","timestamp":1588425102824,"metadata":{"connectionId":1,"message":{"seq":1641,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js","sourceReference":1096094980}}}},"level":0} {"tag":"dap.send","timestamp":1588425102824,"metadata":{"connectionId":1,"message":{"seq":1642,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102824,"metadata":{"connectionId":1,"message":{"seq":1643,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102824,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102824,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/searchActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchActions.ts","sourceMapSources":["vs/workbench/contrib/search/browser/searchActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102824,"metadata":{"connectionId":1,"message":{"seq":1644,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js","sourceReference":447101807}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102825,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425102825,"metadata":{"connectionId":1,"message":{"seq":1645,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102825,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102825,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/search.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/search.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/search.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/search.ts","sourceMapSources":["vs/workbench/contrib/search/common/search.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102825,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425102826,"metadata":{"connectionId":1,"message":{"seq":1646,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/search.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/search.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102826,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102827,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102827,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/symbolsQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/symbolsQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/search/browser/symbolsQuickAccess.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102827,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102827,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/searchModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchModel.ts","sourceMapSources":["vs/workbench/contrib/search/common/searchModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102827,"metadata":{"connectionId":1,"message":{"seq":1647,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/searchModel.js","sourceReference":881995354}}}},"level":0} {"tag":"dap.send","timestamp":1588425102827,"metadata":{"connectionId":1,"message":{"seq":1648,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js","sourceReference":2084514309}}}},"level":0} {"tag":"dap.send","timestamp":1588425102828,"metadata":{"connectionId":1,"message":{"seq":1649,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102828,"metadata":{"connectionId":1,"message":{"seq":1650,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/searchModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102828,"metadata":{"connectionId":1,"message":{"seq":1651,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js","sourceReference":1861316097}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102829,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102829,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102829,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102829,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102829,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts","sourceMapSources":["vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102829,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102830,"metadata":{"connectionId":1,"message":{"seq":1652,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102830,"metadata":{"connectionId":1,"message":{"seq":1653,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102830,"metadata":{"connectionId":1,"message":{"seq":1654,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js","sourceReference":34054733}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102830,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102830,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/anythingQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/search/browser/anythingQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102830,"metadata":{"connectionId":1,"message":{"seq":1655,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js","sourceReference":1329915767}}}},"level":0} {"tag":"dap.send","timestamp":1588425102831,"metadata":{"connectionId":1,"message":{"seq":1656,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102831,"metadata":{"connectionId":1,"message":{"seq":1657,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js","sourceReference":1334200077}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102831,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102831,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102831,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/searchIcons.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchIcons.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchIcons.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchIcons.ts","sourceMapSources":["vs/workbench/contrib/search/browser/searchIcons.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102832,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js"},"level":0} {"tag":"dap.send","timestamp":1588425102834,"metadata":{"connectionId":1,"message":{"seq":1658,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchIcons.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchIcons.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102834,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102834,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts","sourceMapSources":["vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102838,"metadata":{"connectionId":1,"message":{"seq":1659,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102838,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/iterator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/iterator.js"},"level":0} {"tag":"dap.send","timestamp":1588425102839,"metadata":{"connectionId":1,"message":{"seq":1660,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js","sourceReference":605165606}}}},"level":0} {"tag":"dap.send","timestamp":1588425102839,"metadata":{"connectionId":1,"message":{"seq":1661,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js","sourceReference":1314591745}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102840,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js"},"level":0} {"tag":"dap.send","timestamp":1588425102841,"metadata":{"connectionId":1,"message":{"seq":1662,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/iterator.js","path":"/Users/roblou/code/vscode/out/vs/base/common/iterator.js","sourceReference":503711725}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102841,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/labels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/labels.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102841,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102842,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/searchEditor/browser/searchEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts","sourceMapSources":["vs/workbench/contrib/searchEditor/browser/searchEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102842,"metadata":{"connectionId":1,"message":{"seq":1663,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js","sourceReference":2014324190}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102844,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425102845,"metadata":{"connectionId":1,"message":{"seq":1664,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102845,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102845,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.ts","sourceMapSources":["vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102846,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102846,"metadata":{"connectionId":1,"message":{"seq":1665,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/labels.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/labels.js","sourceReference":1585991803}}}},"level":0} {"tag":"dap.send","timestamp":1588425102846,"metadata":{"connectionId":1,"message":{"seq":1666,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js","sourceReference":948317211}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102847,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js"},"level":0} {"tag":"dap.send","timestamp":1588425102847,"metadata":{"connectionId":1,"message":{"seq":1667,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102848,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102848,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/iterator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/iterator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/iterator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/iterator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/iterator.ts","sourceMapSources":["vs/base/common/iterator.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102848,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102848,"metadata":{"connectionId":1,"message":{"seq":1668,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js","sourceReference":1704265774}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102850,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102850,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/aria/aria.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/aria/aria.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/aria/aria.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/aria/aria.ts","sourceMapSources":["vs/base/browser/ui/aria/aria.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102850,"metadata":{"connectionId":1,"message":{"seq":1669,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/iterator.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/iterator.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102850,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/memento.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/memento.js"},"level":0} {"tag":"dap.send","timestamp":1588425102851,"metadata":{"connectionId":1,"message":{"seq":1670,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js","sourceReference":2029422724}}}},"level":0} {"tag":"dap.send","timestamp":1588425102851,"metadata":{"connectionId":1,"message":{"seq":1671,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js","sourceReference":798830340}}}},"level":0} {"tag":"dap.send","timestamp":1588425102851,"metadata":{"connectionId":1,"message":{"seq":1672,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/aria/aria.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/aria/aria.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102851,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102851,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/labels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/labels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/labels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/labels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/labels.ts","sourceMapSources":["vs/workbench/browser/labels.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102852,"metadata":{"connectionId":1,"message":{"seq":1673,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/memento.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/memento.js","sourceReference":2003194375}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102852,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102852,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102852,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/patternInputWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/patternInputWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.ts","sourceMapSources":["vs/workbench/contrib/search/browser/patternInputWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102852,"metadata":{"connectionId":1,"message":{"seq":1674,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/labels.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/labels.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102853,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102853,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/searchResultsView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchResultsView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.ts","sourceMapSources":["vs/workbench/contrib/search/browser/searchResultsView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102853,"metadata":{"connectionId":1,"message":{"seq":1675,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102853,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102853,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/queryBuilder.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/queryBuilder.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/queryBuilder.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/queryBuilder.ts","sourceMapSources":["vs/workbench/contrib/search/common/queryBuilder.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102853,"metadata":{"connectionId":1,"message":{"seq":1676,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102853,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102853,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts","sourceMapSources":["vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102854,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js"},"level":0} {"tag":"dap.send","timestamp":1588425102856,"metadata":{"connectionId":1,"message":{"seq":1677,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js","sourceReference":1566863243}}}},"level":0} {"tag":"dap.send","timestamp":1588425102856,"metadata":{"connectionId":1,"message":{"seq":1678,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js","sourceReference":1601188316}}}},"level":0} {"tag":"dap.send","timestamp":1588425102857,"metadata":{"connectionId":1,"message":{"seq":1679,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/queryBuilder.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/queryBuilder.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102857,"metadata":{"connectionId":1,"message":{"seq":1680,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102857,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102857,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/memento.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/memento.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/memento.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/memento.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/memento.ts","sourceMapSources":["vs/workbench/common/memento.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102857,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js"},"level":0} {"tag":"dap.send","timestamp":1588425102858,"metadata":{"connectionId":1,"message":{"seq":1681,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/memento.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/memento.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102858,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102858,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/replace.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/replace.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/replace.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/replace.ts","sourceMapSources":["vs/workbench/contrib/search/common/replace.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102859,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102859,"metadata":{"connectionId":1,"message":{"seq":1682,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/replace.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/replace.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102859,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102859,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/activity.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/activity.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/activity.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/activity.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/activity.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102860,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js"},"level":0} {"tag":"dap.send","timestamp":1588425102860,"metadata":{"connectionId":1,"message":{"seq":1683,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/activity.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/activity.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102860,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102860,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102860,"metadata":{"connectionId":1,"message":{"seq":1684,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102860,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/decorators.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/decorators.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102861,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102861,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/common/scmService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scmService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scmService.ts","sourceMapSources":["vs/workbench/contrib/scm/common/scmService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102861,"metadata":{"connectionId":1,"message":{"seq":1685,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js","sourceReference":766980787}}}},"level":0} {"tag":"dap.send","timestamp":1588425102868,"metadata":{"connectionId":1,"message":{"seq":1686,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scmService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/common/scmService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102868,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js"},"level":0} {"tag":"dap.send","timestamp":1588425102868,"metadata":{"connectionId":1,"message":{"seq":1687,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/common/scmService.js","sourceReference":145622909}}}},"level":0} {"tag":"dap.send","timestamp":1588425102868,"metadata":{"connectionId":1,"message":{"seq":1688,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js","sourceReference":2056690696}}}},"level":0} {"tag":"dap.send","timestamp":1588425102869,"metadata":{"connectionId":1,"message":{"seq":1689,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/decorators.js","path":"/Users/roblou/code/vscode/out/vs/base/common/decorators.js","sourceReference":922951651}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102869,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102870,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102870,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/mainPane.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/mainPane.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/mainPane.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/mainPane.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/mainPane.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102870,"metadata":{"connectionId":1,"message":{"seq":1690,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/mainPane.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/mainPane.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102871,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102871,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/decorators.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/decorators.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/decorators.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/decorators.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/decorators.ts","sourceMapSources":["vs/base/common/decorators.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102871,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js"},"level":0} {"tag":"dap.send","timestamp":1588425102871,"metadata":{"connectionId":1,"message":{"seq":1691,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/decorators.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/decorators.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102872,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102872,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102873,"metadata":{"connectionId":1,"message":{"seq":1692,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js","sourceReference":1858408139}}}},"level":0} {"tag":"dap.send","timestamp":1588425102873,"metadata":{"connectionId":1,"message":{"seq":1693,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js","sourceReference":2100337104}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102873,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102873,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/repositoryPane.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/repositoryPane.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102873,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102873,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/breakpointWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/breakpointWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102874,"metadata":{"connectionId":1,"message":{"seq":1694,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102874,"metadata":{"connectionId":1,"message":{"seq":1695,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102874,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102875,"metadata":{"connectionId":1,"message":{"seq":1696,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js","sourceReference":408137806}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102875,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102875,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/menus.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/menus.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/menus.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/menus.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/menus.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102875,"metadata":{"connectionId":1,"message":{"seq":1697,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js","sourceReference":1946206345}}}},"level":0} {"tag":"dap.send","timestamp":1588425102876,"metadata":{"connectionId":1,"message":{"seq":1698,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/menus.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/menus.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102877,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102877,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/breakpointsView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/breakpointsView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/breakpointsView.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102877,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102877,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActions.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102877,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js"},"level":0} {"tag":"dap.send","timestamp":1588425102877,"metadata":{"connectionId":1,"message":{"seq":1699,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102877,"metadata":{"connectionId":1,"message":{"seq":1700,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102877,"metadata":{"connectionId":1,"message":{"seq":1701,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActions.js","sourceReference":1328705644}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102878,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102878,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/callStackView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/callStackView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102878,"metadata":{"connectionId":1,"message":{"seq":1702,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/callStackView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102878,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102879,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102879,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugToolBar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugToolBar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102880,"metadata":{"connectionId":1,"message":{"seq":1703,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102880,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425102880,"metadata":{"connectionId":1,"message":{"seq":1704,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/callStackView.js","sourceReference":2000981466}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102880,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102881,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102881,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102881,"metadata":{"connectionId":1,"message":{"seq":1705,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugToolBar.js","sourceReference":2043191461}}}},"level":0} {"tag":"dap.send","timestamp":1588425102881,"metadata":{"connectionId":1,"message":{"seq":1706,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102883,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102883,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/statusbarColorProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/statusbarColorProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102883,"metadata":{"connectionId":1,"message":{"seq":1707,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugCommands.js","sourceReference":1921799193}}}},"level":0} {"tag":"dap.send","timestamp":1588425102883,"metadata":{"connectionId":1,"message":{"seq":1708,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/statusbarColorProvider.js","sourceReference":880688114}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102883,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js"},"level":0} {"tag":"dap.send","timestamp":1588425102883,"metadata":{"connectionId":1,"message":{"seq":1709,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102883,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102884,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugService.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102884,"metadata":{"connectionId":1,"message":{"seq":1710,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102884,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102885,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102885,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/loadedScriptsView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/loadedScriptsView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102885,"metadata":{"connectionId":1,"message":{"seq":1711,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102886,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102886,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugStatus.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugStatus.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102886,"metadata":{"connectionId":1,"message":{"seq":1712,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugService.js","sourceReference":498507654}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102886,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102886,"metadata":{"connectionId":1,"message":{"seq":1713,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102887,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102887,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugEditorActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugEditorActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102890,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102890,"metadata":{"connectionId":1,"message":{"seq":1714,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102890,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425102890,"metadata":{"connectionId":1,"message":{"seq":1715,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/loadedScriptsView.js","sourceReference":1672118793}}}},"level":0} {"tag":"dap.send","timestamp":1588425102890,"metadata":{"connectionId":1,"message":{"seq":1716,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugStatus.js","sourceReference":975222246}}}},"level":0} {"tag":"dap.send","timestamp":1588425102890,"metadata":{"connectionId":1,"message":{"seq":1717,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugEditorActions.js","sourceReference":1290447452}}}},"level":0} {"tag":"dap.send","timestamp":1588425102890,"metadata":{"connectionId":1,"message":{"seq":1718,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js","sourceReference":347385771}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102891,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102891,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102892,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102892,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/watchExpressionsView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/watchExpressionsView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/watchExpressionsView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102892,"metadata":{"connectionId":1,"message":{"seq":1719,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js","sourceReference":1638990721}}}},"level":0} {"tag":"dap.send","timestamp":1588425102892,"metadata":{"connectionId":1,"message":{"seq":1720,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js","sourceReference":940182144}}}},"level":0} {"tag":"dap.send","timestamp":1588425102892,"metadata":{"connectionId":1,"message":{"seq":1721,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js","sourceReference":1933430893}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102892,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js"},"level":0} {"tag":"dap.send","timestamp":1588425102893,"metadata":{"connectionId":1,"message":{"seq":1722,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102893,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102894,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102894,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/variablesView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/variablesView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/variablesView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/variablesView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/variablesView.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102894,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102894,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugContentProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugContentProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugContentProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102894,"metadata":{"connectionId":1,"message":{"seq":1723,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js","sourceReference":1268370586}}}},"level":0} {"tag":"dap.send","timestamp":1588425102894,"metadata":{"connectionId":1,"message":{"seq":1724,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js","sourceReference":365608423}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102894,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102895,"metadata":{"connectionId":1,"message":{"seq":1725,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/variablesView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/variablesView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102895,"metadata":{"connectionId":1,"message":{"seq":1726,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102895,"metadata":{"connectionId":1,"message":{"seq":1727,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js","sourceReference":255714808}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102896,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102896,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102896,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/welcomeView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/welcomeView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/welcomeView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102896,"metadata":{"connectionId":1,"message":{"seq":1728,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102896,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js"},"level":0} {"tag":"dap.send","timestamp":1588425102896,"metadata":{"connectionId":1,"message":{"seq":1729,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102896,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102897,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugProgress.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugProgress.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugProgress.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugProgress.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugProgress.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102897,"metadata":{"connectionId":1,"message":{"seq":1730,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js","sourceReference":951546976}}}},"level":0} {"tag":"dap.send","timestamp":1588425102897,"metadata":{"connectionId":1,"message":{"seq":1731,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js","sourceReference":768592616}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102897,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102898,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markersModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersModel.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markersModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102898,"metadata":{"connectionId":1,"message":{"seq":1732,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugProgress.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugProgress.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102898,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js"},"level":0} {"tag":"dap.send","timestamp":1588425102898,"metadata":{"connectionId":1,"message":{"seq":1733,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102898,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102898,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markersViewActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersViewActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markersViewActions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102899,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102899,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/constants.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/constants.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/constants.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/constants.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/constants.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102899,"metadata":{"connectionId":1,"message":{"seq":1734,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102899,"metadata":{"connectionId":1,"message":{"seq":1735,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js","sourceReference":138207123}}}},"level":0} {"tag":"dap.send","timestamp":1588425102899,"metadata":{"connectionId":1,"message":{"seq":1736,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js","sourceReference":2108343120}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102899,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425102900,"metadata":{"connectionId":1,"message":{"seq":1737,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/constants.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/constants.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102900,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102900,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markersView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersView.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markersView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102901,"metadata":{"connectionId":1,"message":{"seq":1738,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102901,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js"},"level":0} {"tag":"dap.send","timestamp":1588425102901,"metadata":{"connectionId":1,"message":{"seq":1739,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js","sourceReference":1026469242}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102913,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102913,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/messages.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/messages.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/messages.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/messages.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/messages.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102913,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js"},"level":0} {"tag":"dap.send","timestamp":1588425102913,"metadata":{"connectionId":1,"message":{"seq":1740,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js","sourceReference":89797508}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102914,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js"},"level":0} {"tag":"dap.send","timestamp":1588425102914,"metadata":{"connectionId":1,"message":{"seq":1741,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/messages.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/messages.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102914,"metadata":{"connectionId":1,"message":{"seq":1742,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js","sourceReference":1785114375}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102914,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/history.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/history.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102915,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102915,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/exceptionWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/exceptionWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/exceptionWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102916,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js"},"level":0} {"tag":"dap.send","timestamp":1588425102916,"metadata":{"connectionId":1,"message":{"seq":1743,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102916,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102916,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markersFileDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFileDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFileDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFileDecorations.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markersFileDecorations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102917,"metadata":{"connectionId":1,"message":{"seq":1744,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","sourceReference":1148838464}}}},"level":0} {"tag":"dap.send","timestamp":1588425102917,"metadata":{"connectionId":1,"message":{"seq":1745,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/history.js","path":"/Users/roblou/code/vscode/out/vs/base/common/history.js","sourceReference":1748274566}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102917,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js"},"level":0} {"tag":"dap.send","timestamp":1588425102918,"metadata":{"connectionId":1,"message":{"seq":1746,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFileDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFileDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102918,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102918,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markers.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102918,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425102918,"metadata":{"connectionId":1,"message":{"seq":1747,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js","sourceReference":70503384}}}},"level":0} {"tag":"dap.send","timestamp":1588425102918,"metadata":{"connectionId":1,"message":{"seq":1748,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js","sourceReference":498854573}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102919,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102919,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/wordHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","sourceMapSources":["vs/editor/common/model/wordHelper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102920,"metadata":{"connectionId":1,"message":{"seq":1749,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markers.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102920,"metadata":{"connectionId":1,"message":{"seq":1750,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js","path":"/Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js","sourceReference":1054724896}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102920,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js"},"level":0} {"tag":"dap.send","timestamp":1588425102920,"metadata":{"connectionId":1,"message":{"seq":1751,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102920,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102920,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/history.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/history.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/history.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/history.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/history.ts","sourceMapSources":["vs/base/common/history.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102921,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102921,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugHover.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugHover.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugHover.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugHover.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugHover.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102921,"metadata":{"connectionId":1,"message":{"seq":1752,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/history.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/history.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102921,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js"},"level":0} {"tag":"dap.send","timestamp":1588425102921,"metadata":{"connectionId":1,"message":{"seq":1753,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugHover.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugHover.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102922,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102922,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/hover/getHover.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/getHover.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/getHover.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/hover/getHover.ts","sourceMapSources":["vs/editor/contrib/hover/getHover.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102922,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102922,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/browser/contextScopedHistoryWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/browser/contextScopedHistoryWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/browser/contextScopedHistoryWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/browser/contextScopedHistoryWidget.ts","sourceMapSources":["vs/platform/browser/contextScopedHistoryWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102922,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js"},"level":0} {"tag":"dap.send","timestamp":1588425102923,"metadata":{"connectionId":1,"message":{"seq":1754,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js","sourceReference":258088205}}}},"level":0} {"tag":"dap.send","timestamp":1588425102923,"metadata":{"connectionId":1,"message":{"seq":1755,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js","sourceReference":92373511}}}},"level":0} {"tag":"dap.send","timestamp":1588425102923,"metadata":{"connectionId":1,"message":{"seq":1756,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/getHover.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/getHover.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102923,"metadata":{"connectionId":1,"message":{"seq":1757,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/browser/contextScopedHistoryWidget.ts","path":"/Users/roblou/code/vscode/src/vs/platform/browser/contextScopedHistoryWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102923,"metadata":{"connectionId":1,"message":{"seq":1758,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js","sourceReference":162858674}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102923,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102924,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102924,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugActionViewItems.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugActionViewItems.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugActionViewItems.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102924,"metadata":{"connectionId":1,"message":{"seq":1759,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102925,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102925,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102925,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102925,"metadata":{"connectionId":1,"message":{"seq":1760,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js","sourceReference":690684817}}}},"level":0} {"tag":"dap.send","timestamp":1588425102926,"metadata":{"connectionId":1,"message":{"seq":1761,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102926,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102926,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/linkDetector.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/linkDetector.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/linkDetector.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102926,"metadata":{"connectionId":1,"message":{"seq":1762,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js","sourceReference":408893399}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102926,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102927,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102927,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/replViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/replViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/replViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/replViewer.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/replViewer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102927,"metadata":{"connectionId":1,"message":{"seq":1763,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102927,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425102928,"metadata":{"connectionId":1,"message":{"seq":1764,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/replViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/replViewer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102928,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102928,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/replModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/replModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/replModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/replModel.ts","sourceMapSources":["vs/workbench/contrib/debug/common/replModel.ts"]},"level":0} {"tag":"cdp.receive","timestamp":1588425102928,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1572","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","startLine":0,"startColumn":0,"endLine":88,"endColumn":3,"executionContextId":1,"hash":"27fdbeda01e4f1750b83345a5c1495cb4ec2d05f","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"scrollbarVisibilityController.js.map","hasSourceURL":false,"isModule":false,"length":3598,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102928,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1573","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js","startLine":0,"startColumn":0,"endLine":114,"endColumn":3,"executionContextId":1,"hash":"2ab52bb65b8a28b35303a0bc201f0b452353dcc6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalLinkHelpers.js.map","hasSourceURL":false,"isModule":false,"length":5105,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102928,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1574","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js","startLine":0,"startColumn":0,"endLine":111,"endColumn":3,"executionContextId":1,"hash":"30becfb606f9be750074a293b041eaa107801a5b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"terminalLink.js.map","hasSourceURL":false,"isModule":false,"length":6352,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102928,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1575","url":"internal/original-fs/streams.js","startLine":0,"startColumn":0,"endLine":406,"endColumn":0,"executionContextId":1,"hash":"1b76ee465253fc4223cf2cac941c8f7262d9d648","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":10282,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"1"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425102928,"metadata":{"connectionId":1,"message":{"seq":1765,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js","sourceReference":576535262}}}},"level":0} {"tag":"dap.send","timestamp":1588425102928,"metadata":{"connectionId":1,"message":{"seq":1766,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js","sourceReference":772500826}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102928,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102929,"metadata":{"connectionId":1,"message":{"seq":1767,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/replModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/replModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102929,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102930,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102930,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102930,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102930,"metadata":{"connectionId":1,"message":{"seq":1768,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js","sourceReference":1215160694}}}},"level":0} {"tag":"dap.send","timestamp":1588425102930,"metadata":{"connectionId":1,"message":{"seq":1769,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102931,"metadata":{"connectionId":1,"message":{"seq":1770,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js","sourceReference":295889291}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102931,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102931,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102931,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewEditorInput.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102931,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102931,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewWorkbenchService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewWorkbenchService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewWorkbenchService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102931,"metadata":{"connectionId":1,"message":{"seq":1771,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js","sourceReference":214895848}}}},"level":0} {"tag":"dap.send","timestamp":1588425102932,"metadata":{"connectionId":1,"message":{"seq":1772,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102932,"metadata":{"connectionId":1,"message":{"seq":1773,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102932,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102932,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102932,"metadata":{"connectionId":1,"message":{"seq":1774,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js","sourceReference":110918506}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102933,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102933,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102933,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/url/common/externalUriResolver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/externalUriResolver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/externalUriResolver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/externalUriResolver.ts","sourceMapSources":["vs/workbench/contrib/url/common/externalUriResolver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102933,"metadata":{"connectionId":1,"message":{"seq":1775,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102934,"metadata":{"connectionId":1,"message":{"seq":1776,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/externalUriResolver.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/externalUriResolver.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102934,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102934,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102934,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentService.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102935,"metadata":{"connectionId":1,"message":{"seq":1777,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102935,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102935,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102935,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentsEditorContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentsEditorContribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102935,"metadata":{"connectionId":1,"message":{"seq":1778,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsEditorContribution.js","sourceReference":756405110}}}},"level":0} {"tag":"dap.send","timestamp":1588425102936,"metadata":{"connectionId":1,"message":{"seq":1779,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102936,"metadata":{"connectionId":1,"message":{"seq":1780,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js","sourceReference":911970796}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102936,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102936,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102936,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts","sourceMapSources":["vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102937,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js"},"level":0} {"tag":"dap.send","timestamp":1588425102937,"metadata":{"connectionId":1,"message":{"seq":1781,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102937,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102937,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/url/common/trustedDomainsValidator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator.ts","sourceMapSources":["vs/workbench/contrib/url/common/trustedDomainsValidator.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102937,"metadata":{"connectionId":0,"message":{"seq":18,"type":"event","event":"output","body":{"category":"stderr","output":"(node:7822) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n(node:7822) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425102938,"metadata":{"connectionId":1,"message":{"seq":1782,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomainsValidator.js","sourceReference":1218169832}}}},"level":0} {"tag":"dap.send","timestamp":1588425102938,"metadata":{"connectionId":1,"message":{"seq":1783,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js","sourceReference":582281047}}}},"level":0} {"tag":"dap.send","timestamp":1588425102938,"metadata":{"connectionId":1,"message":{"seq":1784,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425102938,"metadata":{"connectionId":1,"message":{"seq":1785,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js","sourceReference":1798588408}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102939,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102951,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102952,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102952,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/common/extensionsUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts","sourceMapSources":["vs/workbench/contrib/extensions/common/extensionsUtils.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102952,"metadata":{"connectionId":1,"message":{"seq":1786,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js","sourceReference":2060394229}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102952,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1576","url":"/Users/roblou/code/vscode/node_modules/spdlog/index.js","startLine":0,"startColumn":0,"endLine":39,"endColumn":66,"executionContextId":1,"hash":"1e799c759229ff336ef6d75324756ba90f19b2d4","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1334,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102952,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1577","url":"/Users/roblou/code/vscode/node_modules/mkdirp/index.js","startLine":0,"startColumn":0,"endLine":99,"endColumn":66,"executionContextId":1,"hash":"0f8a1263898d47da099d8fee8e9696d60cedf370","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2852,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102952,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1578","url":"/Users/roblou/code/vscode/node_modules/spdlog/node_modules/bindings/bindings.js","startLine":0,"startColumn":0,"endLine":222,"endColumn":66,"executionContextId":1,"hash":"2af77a465ddeaa5003e0374241a0677e207eeb1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6206,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102952,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1579","url":"/Users/roblou/code/vscode/node_modules/file-uri-to-path/index.js","startLine":0,"startColumn":0,"endLine":67,"endColumn":66,"executionContextId":1,"hash":"39ddec8c965a4ba128305ea0ab3904cf5af4e07a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1943,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102952,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1580","url":"internal/fs/watchers.js","startLine":0,"startColumn":0,"endLine":206,"endColumn":0,"executionContextId":1,"hash":"18decd88659ecfb6191e5207915a87e71f196700","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6310,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"2"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102953,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102954,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102954,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/url/common/trustedDomains.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/url/common/trustedDomains.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomains.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomains.ts","sourceMapSources":["vs/workbench/contrib/url/common/trustedDomains.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102954,"metadata":{"connectionId":1,"message":{"seq":1787,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102954,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js"},"level":0} {"tag":"dap.send","timestamp":1588425102955,"metadata":{"connectionId":1,"message":{"seq":1788,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomains.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/url/common/trustedDomains.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102955,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102956,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102958,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/common/extensionsInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.ts","sourceMapSources":["vs/workbench/contrib/extensions/common/extensionsInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102964,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425102982,"metadata":{"connectionId":1,"message":{"seq":1789,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102991,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102991,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102992,"metadata":{"connectionId":1,"message":{"seq":1790,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActions.js","sourceReference":1614697443}}}},"level":0} {"tag":"dap.send","timestamp":1588425102992,"metadata":{"connectionId":1,"message":{"seq":1791,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js","sourceReference":107933749}}}},"level":0} {"tag":"dap.send","timestamp":1588425102992,"metadata":{"connectionId":1,"message":{"seq":1792,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js","sourceReference":335538317}}}},"level":0} {"tag":"dap.send","timestamp":1588425102992,"metadata":{"connectionId":1,"message":{"seq":1793,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js","sourceReference":1330729751}}}},"level":0} {"tag":"dap.send","timestamp":1588425102992,"metadata":{"connectionId":1,"message":{"seq":1794,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js","sourceReference":1416101448}}}},"level":0} {"tag":"dap.send","timestamp":1588425102992,"metadata":{"connectionId":0,"message":{"seq":19,"type":"event","event":"output","body":{"category":"stderr","output":"(node:7822) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n(node:7822) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425102992,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"D796B04B8B57AD8DC84B37A8F5C94ABF","type":"page","title":"","url":"","attached":false,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425102992,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1581","url":"/Users/roblou/code/vscode/node_modules/vscode-sqlite3/lib/sqlite3.js","startLine":0,"startColumn":0,"endLine":206,"endColumn":66,"executionContextId":1,"hash":"1bbc1883721ec78d49feb8e3ac48193159e9e99a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6548,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102993,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102993,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425102993,"metadata":{"connectionId":1,"message":{"seq":1795,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425102994,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102994,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425102994,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js"},"level":0} {"tag":"dap.send","timestamp":1588425103001,"metadata":{"connectionId":1,"message":{"seq":1796,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103001,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103001,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103001,"metadata":{"connectionId":1,"message":{"seq":1797,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103002,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js"},"level":0} {"tag":"dap.send","timestamp":1588425103003,"metadata":{"connectionId":1,"message":{"seq":1798,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js","sourceReference":2134406491}}}},"level":0} {"tag":"dap.send","timestamp":1588425103003,"metadata":{"connectionId":1,"message":{"seq":1799,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js","sourceReference":193241474}}}},"level":0} {"tag":"dap.send","timestamp":1588425103004,"metadata":{"connectionId":1,"message":{"seq":1800,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103004,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103004,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103004,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js"},"level":0} {"tag":"dap.send","timestamp":1588425103006,"metadata":{"connectionId":1,"message":{"seq":1801,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103006,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js"},"level":0} {"tag":"dap.send","timestamp":1588425103007,"metadata":{"connectionId":1,"message":{"seq":1802,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js","sourceReference":1275826525}}}},"level":0} {"tag":"dap.send","timestamp":1588425103007,"metadata":{"connectionId":1,"message":{"seq":1803,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js","sourceReference":1167878073}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103009,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103009,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103010,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js"},"level":0} {"tag":"dap.send","timestamp":1588425103030,"metadata":{"connectionId":1,"message":{"seq":1804,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103031,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103031,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/common/extensionsFileTemplate.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate.ts","sourceMapSources":["vs/workbench/contrib/extensions/common/extensionsFileTemplate.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103032,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103050,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js"},"level":0} {"tag":"dap.send","timestamp":1588425103053,"metadata":{"connectionId":1,"message":{"seq":1805,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js","sourceReference":1120410403}}}},"level":0} {"tag":"dap.send","timestamp":1588425103053,"metadata":{"connectionId":1,"message":{"seq":1806,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js","sourceReference":47188568}}}},"level":0} {"tag":"dap.send","timestamp":1588425103053,"metadata":{"connectionId":1,"message":{"seq":1807,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js","sourceReference":1631893432}}}},"level":0} {"tag":"dap.send","timestamp":1588425103054,"metadata":{"connectionId":1,"message":{"seq":1808,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103054,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103054,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103055,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425103068,"metadata":{"connectionId":1,"message":{"seq":1809,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103068,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103068,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103069,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js"},"level":0} {"tag":"dap.send","timestamp":1588425103069,"metadata":{"connectionId":1,"message":{"seq":1810,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js","sourceReference":550037147}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425103069,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"D796B04B8B57AD8DC84B37A8F5C94ABF","type":"page","title":"sharedProcess.html?config=%7B\"appRoot\"%3A\"%2FUsers%2Froblou%2Fcode%2Fvscode\"%2C\"machineId\"%3A\"e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba\"%2C\"userEnv\"%3A%7B\"VSCODE_IPC_HOOK\"%3A\"%2FUsers%2Froblou%2FLibrary%2FApplication Support%2Fcode-oss-dev%2F1.46.0-main.sock\"%2C\"VSCODE_NLS_CONFIG\"%3A\"%7B%5C\"locale%5C\"%3A%5C\"en%5C\"%2C%5C\"availableLanguages%5C\"%3A%7B%7D%2C%5C\"_languagePackSupport%5C\"%3Atrue%7D\"%2C\"VSCODE_LOGS\"%3A\"%2FUsers%2Froblou%2FLibrary%2FApplication Support%2Fcode-oss-dev%2Flogs%2F20200502T081139\"%7D%2C\"windowId\"%3A2%7D","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/sharedProcess/sharedProcess.html?config=%7B%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22windowId%22%3A2%7D","attached":false,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425103072,"metadata":{"connectionId":1,"message":{"seq":1811,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103072,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103072,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts","sourceMapSources":["vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103072,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103074,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js"},"level":0} {"tag":"dap.send","timestamp":1588425103074,"metadata":{"connectionId":1,"message":{"seq":1812,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103074,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103074,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/browser/customEditorInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditorInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts","sourceMapSources":["vs/workbench/contrib/customEditor/browser/customEditorInput.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103075,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103075,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/browser/customEditors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/customEditors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.ts","sourceMapSources":["vs/workbench/contrib/customEditor/browser/customEditors.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103075,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103077,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425103077,"metadata":{"connectionId":1,"message":{"seq":1813,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103077,"metadata":{"connectionId":1,"message":{"seq":1814,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103078,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103078,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/textResourceEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textResourceEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/textResourceEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103081,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103081,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103081,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/browser/commands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/commands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/commands.ts","sourceMapSources":["vs/workbench/contrib/customEditor/browser/commands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103081,"metadata":{"connectionId":1,"message":{"seq":1815,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103081,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103082,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425103082,"metadata":{"connectionId":1,"message":{"seq":1816,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/commands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/browser/commands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103083,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103083,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/output/common/output.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/output.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/output.ts","sourceMapSources":["vs/workbench/contrib/output/common/output.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103083,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103083,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js"},"level":0} {"tag":"dap.send","timestamp":1588425103083,"metadata":{"connectionId":1,"message":{"seq":1817,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/output.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/output.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103083,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103083,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/output/browser/outputServices.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputServices.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputServices.ts","sourceMapSources":["vs/workbench/contrib/output/browser/outputServices.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103084,"metadata":{"connectionId":1,"message":{"seq":1818,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/output.js","sourceReference":1862850738}}}},"level":0} {"tag":"dap.send","timestamp":1588425103084,"metadata":{"connectionId":1,"message":{"seq":1819,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/browser/commands.js","sourceReference":766812543}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103084,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103084,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103084,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103084,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsViews.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsViews.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103084,"metadata":{"connectionId":1,"message":{"seq":1820,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputServices.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/outputServices.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103085,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425103085,"metadata":{"connectionId":1,"message":{"seq":1821,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103085,"metadata":{"connectionId":1,"message":{"seq":1822,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103085,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103085,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/output/browser/logViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/logViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/logViewer.ts","sourceMapSources":["vs/workbench/contrib/output/browser/logViewer.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103086,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103086,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/common/extensionQuery.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.ts","sourceMapSources":["vs/workbench/contrib/extensions/common/extensionQuery.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103086,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103087,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103087,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/errorsWithActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/errorsWithActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/errorsWithActions.ts","sourceMapSources":["vs/base/common/errorsWithActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103088,"metadata":{"connectionId":1,"message":{"seq":1823,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/logViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/browser/logViewer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103088,"metadata":{"connectionId":1,"message":{"seq":1824,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103088,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103088,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103088,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103088,"metadata":{"connectionId":1,"message":{"seq":1825,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/errorsWithActions.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/errorsWithActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103088,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103088,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/terminalMenu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalMenu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalMenu.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/terminalMenu.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103089,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425103089,"metadata":{"connectionId":1,"message":{"seq":1826,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103090,"metadata":{"connectionId":1,"message":{"seq":1827,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalMenu.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalMenu.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103090,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103090,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103090,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/terminalColorRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/terminalColorRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103091,"metadata":{"connectionId":1,"message":{"seq":1828,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViews.js","sourceReference":198633929}}}},"level":0} {"tag":"dap.send","timestamp":1588425103091,"metadata":{"connectionId":1,"message":{"seq":1829,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103092,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103092,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/environmentVariable.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/environmentVariable.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103092,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425103092,"metadata":{"connectionId":1,"message":{"seq":1830,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/outputServices.js","sourceReference":1138827}}}},"level":0} {"tag":"dap.send","timestamp":1588425103092,"metadata":{"connectionId":1,"message":{"seq":1831,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js","sourceReference":2000860050}}}},"level":0} {"tag":"dap.send","timestamp":1588425103092,"metadata":{"connectionId":1,"message":{"seq":1832,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103092,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103092,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalService.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103092,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js"},"level":0} {"tag":"dap.send","timestamp":1588425103093,"metadata":{"connectionId":1,"message":{"seq":1833,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/browser/logViewer.js","sourceReference":1736052280}}}},"level":0} {"tag":"dap.send","timestamp":1588425103093,"metadata":{"connectionId":1,"message":{"seq":1834,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js","path":"/Users/roblou/code/vscode/out/vs/base/common/errorsWithActions.js","sourceReference":357716342}}}},"level":0} {"tag":"dap.send","timestamp":1588425103093,"metadata":{"connectionId":1,"message":{"seq":1835,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalMenu.js","sourceReference":1662541554}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103093,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103093,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103093,"metadata":{"connectionId":1,"message":{"seq":1836,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103094,"metadata":{"connectionId":1,"message":{"seq":1837,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103094,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103094,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/environmentVariableService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/environmentVariableService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103094,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js"},"level":0} {"tag":"dap.send","timestamp":1588425103095,"metadata":{"connectionId":1,"message":{"seq":1838,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103095,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103095,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalCommands.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103095,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js"},"level":0} {"tag":"dap.send","timestamp":1588425103095,"metadata":{"connectionId":1,"message":{"seq":1839,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103095,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103095,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/problemMatcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/problemMatcher.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103096,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js"},"level":0} {"tag":"dap.send","timestamp":1588425103096,"metadata":{"connectionId":1,"message":{"seq":1840,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103096,"metadata":{"connectionId":1,"message":{"seq":1841,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalActions.js","sourceReference":1157307178}}}},"level":0} {"tag":"dap.send","timestamp":1588425103096,"metadata":{"connectionId":1,"message":{"seq":1842,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/common/extensionQuery.js","sourceReference":541766278}}}},"level":0} {"tag":"dap.send","timestamp":1588425103096,"metadata":{"connectionId":1,"message":{"seq":1843,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalColorRegistry.js","sourceReference":1281124462}}}},"level":0} {"tag":"dap.send","timestamp":1588425103096,"metadata":{"connectionId":1,"message":{"seq":1844,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariable.js","sourceReference":1797007871}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103097,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103097,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103097,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts","sourceMapSources":["vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103097,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103098,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/jsonSchema_v1.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/jsonSchema_v1.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103098,"metadata":{"connectionId":1,"message":{"seq":1845,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103098,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js"},"level":0} {"tag":"dap.send","timestamp":1588425103098,"metadata":{"connectionId":1,"message":{"seq":1846,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103098,"metadata":{"connectionId":1,"message":{"seq":1847,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalService.js","sourceReference":717284309}}}},"level":0} {"tag":"dap.send","timestamp":1588425103098,"metadata":{"connectionId":1,"message":{"seq":1848,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js","sourceReference":1542893410}}}},"level":0} {"tag":"dap.send","timestamp":1588425103098,"metadata":{"connectionId":1,"message":{"seq":1849,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableService.js","sourceReference":1057802782}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103099,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103099,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103099,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/jsonSchema_v2.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/jsonSchema_v2.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103099,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103099,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/common/tunnelFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/tunnelFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/tunnelFactory.ts","sourceMapSources":["vs/workbench/contrib/remote/common/tunnelFactory.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103099,"metadata":{"connectionId":1,"message":{"seq":1850,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalCommands.js","sourceReference":220291037}}}},"level":0} {"tag":"dap.send","timestamp":1588425103099,"metadata":{"connectionId":1,"message":{"seq":1851,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js","sourceReference":164759767}}}},"level":0} {"tag":"dap.send","timestamp":1588425103099,"metadata":{"connectionId":1,"message":{"seq":1852,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v1.js","sourceReference":1847349088}}}},"level":0} {"tag":"dap.send","timestamp":1588425103100,"metadata":{"connectionId":1,"message":{"seq":1853,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103100,"metadata":{"connectionId":1,"message":{"seq":1854,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/tunnelFactory.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/tunnelFactory.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103101,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103101,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103101,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/common/showCandidate.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/showCandidate.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/showCandidate.ts","sourceMapSources":["vs/workbench/contrib/remote/common/showCandidate.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103101,"metadata":{"connectionId":1,"message":{"seq":1855,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchema_v2.js","sourceReference":2025678421}}}},"level":0} {"tag":"dap.send","timestamp":1588425103102,"metadata":{"connectionId":1,"message":{"seq":1856,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/showCandidate.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/common/showCandidate.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103102,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/dnd.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/dnd.js"},"level":0} {"tag":"dap.send","timestamp":1588425103103,"metadata":{"connectionId":1,"message":{"seq":1857,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemMatcher.js","sourceReference":1054869519}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103103,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103103,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103103,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/browser/tasksQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/tasks/browser/tasksQuickAccess.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103104,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js"},"level":0} {"tag":"dap.send","timestamp":1588425103104,"metadata":{"connectionId":1,"message":{"seq":1858,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103104,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103104,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalFindWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalFindWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103105,"metadata":{"connectionId":1,"message":{"seq":1859,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103105,"metadata":{"connectionId":1,"message":{"seq":1860,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/tunnelFactory.js","sourceReference":568731343}}}},"level":0} {"tag":"dap.send","timestamp":1588425103105,"metadata":{"connectionId":1,"message":{"seq":1861,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/common/showCandidate.js","sourceReference":1431045366}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103105,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103105,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103105,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/dnd.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/dnd.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/dnd.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/dnd.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/dnd.ts","sourceMapSources":["vs/base/browser/dnd.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103106,"metadata":{"connectionId":1,"message":{"seq":1862,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js","sourceReference":959757851}}}},"level":0} {"tag":"dap.send","timestamp":1588425103106,"metadata":{"connectionId":1,"message":{"seq":1863,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/dnd.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/dnd.js","sourceReference":2111659606}}}},"level":0} {"tag":"dap.send","timestamp":1588425103106,"metadata":{"connectionId":1,"message":{"seq":1864,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalFindWidget.js","sourceReference":1447274789}}}},"level":0} {"tag":"dap.send","timestamp":1588425103106,"metadata":{"connectionId":1,"message":{"seq":1865,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/dnd.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/dnd.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103106,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103106,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/views/viewsViewlet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewsViewlet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewsViewlet.ts","sourceMapSources":["vs/workbench/browser/parts/views/viewsViewlet.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103107,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103107,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/browser/explorerViewItems.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts","sourceMapSources":["vs/workbench/contrib/remote/browser/explorerViewItems.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103107,"metadata":{"connectionId":1,"message":{"seq":1866,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewsViewlet.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/views/viewsViewlet.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103107,"metadata":{"connectionId":1,"message":{"seq":1867,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewsViewlet.js","sourceReference":1677064960}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103108,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js"},"level":0} {"tag":"dap.send","timestamp":1588425103108,"metadata":{"connectionId":1,"message":{"seq":1868,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103108,"metadata":{"connectionId":1,"message":{"seq":1869,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/explorerViewItems.js","sourceReference":1258506858}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103109,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103109,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103109,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103109,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/browser/tunnelView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView.ts","sourceMapSources":["vs/workbench/contrib/remote/browser/tunnelView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103110,"metadata":{"connectionId":1,"message":{"seq":1870,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103111,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103111,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103111,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/remote/browser/remoteIndicator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.ts","sourceMapSources":["vs/workbench/contrib/remote/browser/remoteIndicator.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103111,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103111,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/menuPreventer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/menuPreventer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/menuPreventer.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/menuPreventer.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103111,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103111,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103112,"metadata":{"connectionId":1,"message":{"seq":1871,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103112,"metadata":{"connectionId":1,"message":{"seq":1872,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/menuPreventer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/menuPreventer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103112,"metadata":{"connectionId":1,"message":{"seq":1873,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103112,"metadata":{"connectionId":1,"message":{"seq":1874,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/tunnelView.js","sourceReference":134058341}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103112,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js"},"level":0} {"tag":"dap.send","timestamp":1588425103112,"metadata":{"connectionId":1,"message":{"seq":1875,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/remote/browser/remoteIndicator.js","sourceReference":1990221179}}}},"level":0} {"tag":"dap.send","timestamp":1588425103113,"metadata":{"connectionId":1,"message":{"seq":1876,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/menuPreventer.js","sourceReference":1301346920}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103113,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js"},"level":0} {"tag":"dap.send","timestamp":1588425103113,"metadata":{"connectionId":1,"message":{"seq":1877,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js","sourceReference":1012486931}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103114,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103114,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103114,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103114,"metadata":{"connectionId":1,"message":{"seq":1878,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js","sourceReference":1348727259}}}},"level":0} {"tag":"dap.send","timestamp":1588425103114,"metadata":{"connectionId":1,"message":{"seq":1879,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js","sourceReference":314279772}}}},"level":0} {"tag":"dap.send","timestamp":1588425103114,"metadata":{"connectionId":1,"message":{"seq":1880,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js","sourceReference":1752900495}}}},"level":0} {"tag":"dap.send","timestamp":1588425103121,"metadata":{"connectionId":1,"message":{"seq":1881,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103121,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js"},"level":0} {"tag":"dap.send","timestamp":1588425103121,"metadata":{"connectionId":1,"message":{"seq":1882,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js","sourceReference":1783714812}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103122,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103122,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103122,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103122,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103122,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103123,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js"},"level":0} {"tag":"dap.send","timestamp":1588425103123,"metadata":{"connectionId":1,"message":{"seq":1883,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103123,"metadata":{"connectionId":1,"message":{"seq":1884,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103123,"metadata":{"connectionId":1,"message":{"seq":1885,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js","sourceReference":1479699189}}}},"level":0} {"tag":"dap.send","timestamp":1588425103123,"metadata":{"connectionId":1,"message":{"seq":1886,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js","sourceReference":91556262}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103123,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103123,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103124,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js"},"level":0} {"tag":"dap.send","timestamp":1588425103131,"metadata":{"connectionId":1,"message":{"seq":1887,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103131,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103131,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/saveParticipants.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/saveParticipants.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/saveParticipants.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103131,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js"},"level":0} {"tag":"dap.send","timestamp":1588425103131,"metadata":{"connectionId":1,"message":{"seq":1888,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js","sourceReference":1473853128}}}},"level":0} {"tag":"dap.send","timestamp":1588425103131,"metadata":{"connectionId":1,"message":{"seq":1889,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js","sourceReference":720730476}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103132,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103132,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103132,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103132,"metadata":{"connectionId":1,"message":{"seq":1890,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103132,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js"},"level":0} {"tag":"dap.send","timestamp":1588425103133,"metadata":{"connectionId":1,"message":{"seq":1891,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103133,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103133,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103133,"metadata":{"connectionId":1,"message":{"seq":1892,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js","sourceReference":841754848}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103133,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js"},"level":0} {"tag":"dap.send","timestamp":1588425103133,"metadata":{"connectionId":1,"message":{"seq":1893,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103134,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103134,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103134,"metadata":{"connectionId":1,"message":{"seq":1894,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js","sourceReference":1247301008}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103134,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103135,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103135,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103135,"metadata":{"connectionId":1,"message":{"seq":1895,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103135,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js"},"level":0} {"tag":"dap.send","timestamp":1588425103135,"metadata":{"connectionId":1,"message":{"seq":1896,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103135,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103136,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103136,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103136,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103136,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js"},"level":0} {"tag":"dap.send","timestamp":1588425103136,"metadata":{"connectionId":1,"message":{"seq":1897,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103136,"metadata":{"connectionId":1,"message":{"seq":1898,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103136,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103136,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103137,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103137,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/toggleWordWrap.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/toggleWordWrap.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103137,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425103137,"metadata":{"connectionId":1,"message":{"seq":1899,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103137,"metadata":{"connectionId":1,"message":{"seq":1900,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103137,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103137,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103138,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425103138,"metadata":{"connectionId":1,"message":{"seq":1901,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103138,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103138,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/snippetsFile.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/snippetsFile.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103139,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js"},"level":0} {"tag":"dap.send","timestamp":1588425103139,"metadata":{"connectionId":1,"message":{"seq":1902,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103139,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103139,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts","sourceMapSources":["vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103140,"metadata":{"connectionId":1,"message":{"seq":1903,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103140,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103140,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103140,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.ts","sourceMapSources":["vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103140,"metadata":{"connectionId":1,"message":{"seq":1904,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103144,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103145,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103145,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.ts","sourceMapSources":["vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103145,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js"},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1905,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js","sourceReference":699778442}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1906,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection.js","sourceReference":705789068}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1907,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js","sourceReference":473527836}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1908,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js","sourceReference":1899274959}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1909,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js","sourceReference":5802848}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1910,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/snippets/browser/snippetsFile.js","sourceReference":1356080414}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1911,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/showEmmetCommands.js","sourceReference":52349196}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1912,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js","sourceReference":1875668934}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1913,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js","sourceReference":2090980976}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1914,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js","path":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js","sourceReference":234230745}}}},"level":0} {"tag":"dap.send","timestamp":1588425103147,"metadata":{"connectionId":1,"message":{"seq":1915,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js","sourceReference":1996898838}}}},"level":0} {"tag":"dap.send","timestamp":1588425103148,"metadata":{"connectionId":1,"message":{"seq":1916,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103149,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103152,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103152,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/format/browser/formatActionsMultiple.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsMultiple.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.ts","sourceMapSources":["vs/workbench/contrib/format/browser/formatActionsMultiple.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103154,"metadata":{"connectionId":1,"message":{"seq":1917,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103154,"metadata":{"connectionId":1,"message":{"seq":1918,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js","sourceReference":1123751907}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103154,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103155,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103155,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/update/common/update.config.contribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/update/common/update.config.contribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/update/common/update.config.contribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/update/common/update.config.contribution.ts","sourceMapSources":["vs/platform/update/common/update.config.contribution.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103156,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103156,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/update/browser/update.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/update.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.ts","sourceMapSources":["vs/workbench/contrib/update/browser/update.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103156,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103157,"metadata":{"connectionId":1,"message":{"seq":1919,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/update/common/update.config.contribution.ts","path":"/Users/roblou/code/vscode/src/vs/platform/update/common/update.config.contribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103158,"metadata":{"connectionId":1,"message":{"seq":1920,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/update.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103158,"metadata":{"connectionId":1,"message":{"seq":1921,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js","sourceReference":595608399}}}},"level":0} {"tag":"dap.send","timestamp":1588425103158,"metadata":{"connectionId":1,"message":{"seq":1922,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","sourceReference":1711294103}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103158,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103158,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/format/browser/formatActionsNone.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/formatActionsNone.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsNone.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsNone.ts","sourceMapSources":["vs/workbench/contrib/format/browser/formatActionsNone.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103159,"metadata":{"connectionId":1,"message":{"seq":1923,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsNone.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/formatActionsNone.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103160,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/process.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103160,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103160,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/callHierarchy/common/callHierarchy.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/common/callHierarchy.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts","sourceMapSources":["vs/workbench/contrib/callHierarchy/common/callHierarchy.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103160,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103160,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/keybindingLabel/keybindingLabel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/keybindingLabel/keybindingLabel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/keybindingLabel/keybindingLabel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/keybindingLabel/keybindingLabel.ts","sourceMapSources":["vs/base/browser/ui/keybindingLabel/keybindingLabel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103161,"metadata":{"connectionId":1,"message":{"seq":1924,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103161,"metadata":{"connectionId":1,"message":{"seq":1925,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/keybindingLabel/keybindingLabel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/keybindingLabel/keybindingLabel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103161,"metadata":{"connectionId":1,"message":{"seq":1926,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/process.js","path":"/Users/roblou/code/vscode/out/vs/base/common/process.js","sourceReference":378436126}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103161,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103163,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js"},"level":0} {"tag":"dap.send","timestamp":1588425103164,"metadata":{"connectionId":1,"message":{"seq":1927,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js","sourceReference":1746763276}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103164,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103164,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/process.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/process.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/process.ts","sourceMapSources":["vs/base/common/process.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103166,"metadata":{"connectionId":1,"message":{"seq":1928,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103167,"metadata":{"connectionId":1,"message":{"seq":1929,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js","sourceReference":1921311943}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103167,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103169,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103169,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/page/browser/welcomePage.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/welcomePage.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts","sourceMapSources":["vs/workbench/contrib/welcome/page/browser/welcomePage.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103173,"metadata":{"connectionId":1,"message":{"seq":1930,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103174,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103174,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts","sourceMapSources":["vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103174,"metadata":{"connectionId":1,"message":{"seq":1931,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js","sourceReference":1491663707}}}},"level":0} {"tag":"dap.send","timestamp":1588425103174,"metadata":{"connectionId":1,"message":{"seq":1932,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103175,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103175,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103175,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/peekView/peekView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/peekView/peekView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/peekView/peekView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/peekView/peekView.ts","sourceMapSources":["vs/editor/contrib/peekView/peekView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103176,"metadata":{"connectionId":1,"message":{"seq":1933,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/peekView/peekView.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/peekView/peekView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103176,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103177,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103177,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/experiments/common/experimentService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/common/experimentService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/common/experimentService.ts","sourceMapSources":["vs/workbench/contrib/experiments/common/experimentService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103177,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js"},"level":0} {"tag":"dap.send","timestamp":1588425103177,"metadata":{"connectionId":1,"message":{"seq":1934,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/common/experimentService.js","sourceReference":425120413}}}},"level":0} {"tag":"dap.send","timestamp":1588425103177,"metadata":{"connectionId":1,"message":{"seq":1935,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js","sourceReference":1208892691}}}},"level":0} {"tag":"dap.send","timestamp":1588425103177,"metadata":{"connectionId":1,"message":{"seq":1936,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/common/experimentService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/common/experimentService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103178,"metadata":{"connectionId":1,"message":{"seq":1937,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js","sourceReference":381784854}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103178,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103180,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103180,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/experiments/browser/experimentalPrompt.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/experiments/browser/experimentalPrompt.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experimentalPrompt.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experimentalPrompt.ts","sourceMapSources":["vs/workbench/contrib/experiments/browser/experimentalPrompt.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103181,"metadata":{"connectionId":1,"message":{"seq":1938,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experimentalPrompt.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/experiments/browser/experimentalPrompt.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103181,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js"},"level":0} {"tag":"dap.send","timestamp":1588425103181,"metadata":{"connectionId":1,"message":{"seq":1939,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js","sourceReference":1774328430}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103181,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103181,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/documentSymbols/outline.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outline.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outline.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outline.ts","sourceMapSources":["vs/editor/contrib/documentSymbols/outline.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103182,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js"},"level":0} {"tag":"dap.send","timestamp":1588425103182,"metadata":{"connectionId":1,"message":{"seq":1940,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outline.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outline.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103182,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103182,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.ts","sourceMapSources":["vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103183,"metadata":{"connectionId":1,"message":{"seq":1941,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103184,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103184,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/userDataSync/browser/userDataSync.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts","sourceMapSources":["vs/workbench/contrib/userDataSync/browser/userDataSync.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103184,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js"},"level":0} {"tag":"dap.send","timestamp":1588425103185,"metadata":{"connectionId":1,"message":{"seq":1942,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103185,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103185,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/outline/browser/outlinePane.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.ts","sourceMapSources":["vs/workbench/contrib/outline/browser/outlinePane.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103185,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425103185,"metadata":{"connectionId":1,"message":{"seq":1943,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSync.js","sourceReference":1337754994}}}},"level":0} {"tag":"dap.send","timestamp":1588425103185,"metadata":{"connectionId":1,"message":{"seq":1944,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/outline/browser/outlinePane.js","sourceReference":1955470902}}}},"level":0} {"tag":"dap.send","timestamp":1588425103186,"metadata":{"connectionId":1,"message":{"seq":1945,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103186,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js"},"level":0} {"tag":"dap.send","timestamp":1588425103187,"metadata":{"connectionId":1,"message":{"seq":1946,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js","sourceReference":358443111}}}},"level":0} {"tag":"dap.send","timestamp":1588425103187,"metadata":{"connectionId":1,"message":{"seq":1947,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js","sourceReference":936480858}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103188,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103188,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103192,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103192,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/userDataSync/browser/userDataSyncView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncView.ts","sourceMapSources":["vs/workbench/contrib/userDataSync/browser/userDataSyncView.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103192,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/assert.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/assert.js"},"level":0} {"tag":"dap.send","timestamp":1588425103193,"metadata":{"connectionId":1,"message":{"seq":1948,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103193,"metadata":{"connectionId":1,"message":{"seq":1949,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103193,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103193,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103194,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js"},"level":0} {"tag":"dap.send","timestamp":1588425103194,"metadata":{"connectionId":1,"message":{"seq":1950,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.js","sourceReference":1701152780}}}},"level":0} {"tag":"dap.send","timestamp":1588425103194,"metadata":{"connectionId":1,"message":{"seq":1951,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/assert.js","path":"/Users/roblou/code/vscode/out/vs/base/common/assert.js","sourceReference":430488518}}}},"level":0} {"tag":"dap.send","timestamp":1588425103194,"metadata":{"connectionId":1,"message":{"seq":1952,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103194,"metadata":{"connectionId":1,"message":{"seq":1953,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js","sourceReference":978920216}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103195,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103195,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103195,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/assert.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/assert.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/assert.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/assert.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/assert.ts","sourceMapSources":["vs/base/common/assert.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103196,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425103196,"metadata":{"connectionId":1,"message":{"seq":1954,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js","sourceReference":1787722477}}}},"level":0} {"tag":"dap.send","timestamp":1588425103196,"metadata":{"connectionId":1,"message":{"seq":1955,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/assert.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/assert.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103196,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103196,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103197,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js"},"level":0} {"tag":"dap.send","timestamp":1588425103197,"metadata":{"connectionId":1,"message":{"seq":1956,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js","sourceReference":689536255}}}},"level":0} {"tag":"dap.send","timestamp":1588425103197,"metadata":{"connectionId":1,"message":{"seq":1957,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103198,"metadata":{"connectionId":1,"message":{"seq":1958,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js","sourceReference":277472293}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103198,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103198,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103198,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103199,"metadata":{"connectionId":1,"message":{"seq":1959,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103199,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103199,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103200,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425103200,"metadata":{"connectionId":1,"message":{"seq":1960,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js","sourceReference":1639276234}}}},"level":0} {"tag":"dap.send","timestamp":1588425103200,"metadata":{"connectionId":1,"message":{"seq":1961,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js","sourceReference":401670220}}}},"level":0} {"tag":"dap.send","timestamp":1588425103201,"metadata":{"connectionId":1,"message":{"seq":1962,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103201,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103201,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/timeline/common/timeline.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timeline.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timeline.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timeline.ts","sourceMapSources":["vs/workbench/contrib/timeline/common/timeline.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103202,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js"},"level":0} {"tag":"dap.send","timestamp":1588425103204,"metadata":{"connectionId":1,"message":{"seq":1963,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timeline.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timeline.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103204,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103204,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/timeline/common/timelineService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/common/timelineService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timelineService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timelineService.ts","sourceMapSources":["vs/workbench/contrib/timeline/common/timelineService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103205,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425103206,"metadata":{"connectionId":1,"message":{"seq":1964,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timelineService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/common/timelineService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103206,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103206,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeActions/common/documentationContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationContribution.ts","sourceMapSources":["vs/workbench/contrib/codeActions/common/documentationContribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103206,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js"},"level":0} {"tag":"dap.send","timestamp":1588425103206,"metadata":{"connectionId":1,"message":{"seq":1965,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js","sourceReference":106396237}}}},"level":0} {"tag":"dap.send","timestamp":1588425103206,"metadata":{"connectionId":1,"message":{"seq":1966,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js","sourceReference":154542883}}}},"level":0} {"tag":"dap.send","timestamp":1588425103207,"metadata":{"connectionId":1,"message":{"seq":1967,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationContribution.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103207,"metadata":{"connectionId":1,"message":{"seq":1968,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js","sourceReference":1929591465}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103208,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103209,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103209,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/timeline/browser/timelinePane.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/timeline/browser/timelinePane.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.ts","sourceMapSources":["vs/workbench/contrib/timeline/browser/timelinePane.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103209,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425103210,"metadata":{"connectionId":1,"message":{"seq":1969,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103210,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103210,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.ts","sourceMapSources":["vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103210,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js"},"level":0} {"tag":"dap.send","timestamp":1588425103211,"metadata":{"connectionId":1,"message":{"seq":1970,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js","sourceReference":1086469295}}}},"level":0} {"tag":"dap.send","timestamp":1588425103211,"metadata":{"connectionId":1,"message":{"seq":1971,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js","sourceReference":1066534782}}}},"level":0} {"tag":"dap.send","timestamp":1588425103211,"metadata":{"connectionId":1,"message":{"seq":1972,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103211,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103211,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/common/viewsWelcomeContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.ts","sourceMapSources":["vs/workbench/contrib/welcome/common/viewsWelcomeContribution.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103212,"metadata":{"connectionId":1,"message":{"seq":1973,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeContribution.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103212,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js"},"level":0} {"tag":"dap.send","timestamp":1588425103212,"metadata":{"connectionId":1,"message":{"seq":1974,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js","sourceReference":1734620790}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103213,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103213,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeActions/common/documentationExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.ts","sourceMapSources":["vs/workbench/contrib/codeActions/common/documentationExtensionPoint.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103213,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103213,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.ts","sourceMapSources":["vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103214,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/console.js"},"level":0} {"tag":"dap.send","timestamp":1588425103214,"metadata":{"connectionId":1,"message":{"seq":1975,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103214,"metadata":{"connectionId":1,"message":{"seq":1976,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103214,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103214,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/token.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","sourceMapSources":["vs/editor/common/core/token.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103214,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/paths.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/paths.js"},"level":0} {"tag":"dap.send","timestamp":1588425103215,"metadata":{"connectionId":1,"message":{"seq":1977,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js","sourceReference":832470538}}}},"level":0} {"tag":"dap.send","timestamp":1588425103215,"metadata":{"connectionId":1,"message":{"seq":1978,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/console.js","path":"/Users/roblou/code/vscode/out/vs/base/common/console.js","sourceReference":111900363}}}},"level":0} {"tag":"dap.send","timestamp":1588425103215,"metadata":{"connectionId":1,"message":{"seq":1979,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103216,"metadata":{"connectionId":1,"message":{"seq":1980,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/paths.js","path":"/Users/roblou/code/vscode/out/vs/base/node/paths.js","sourceReference":950015573}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103216,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/paths.js","absolutePath":"/Users/roblou/code/vscode/out/paths.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103216,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103217,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/common/TMGrammars.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammars.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammars.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammars.ts","sourceMapSources":["vs/workbench/services/textMate/common/TMGrammars.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103217,"metadata":{"connectionId":1,"message":{"seq":1981,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammars.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammars.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103217,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js"},"level":0} {"tag":"dap.send","timestamp":1588425103218,"metadata":{"connectionId":1,"message":{"seq":1982,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/paths.js","path":"/Users/roblou/code/vscode/out/paths.js","sourceReference":1375857113}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103218,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103218,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/console.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/console.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceMapSources":["vs/base/common/console.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103218,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103218,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/paths.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/paths.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/paths.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/paths.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/paths.ts","sourceMapSources":["vs/base/node/paths.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103219,"metadata":{"connectionId":1,"message":{"seq":1983,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103219,"metadata":{"connectionId":1,"message":{"seq":1984,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/paths.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/paths.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103219,"metadata":{"connectionId":1,"message":{"seq":1985,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js","sourceReference":599114419}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103219,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103220,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103221,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103221,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/common/TMGrammarFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMGrammarFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory.ts","sourceMapSources":["vs/workbench/services/textMate/common/TMGrammarFactory.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103221,"metadata":{"connectionId":1,"message":{"seq":1986,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js","sourceReference":1395112828}}}},"level":0} {"tag":"dap.send","timestamp":1588425103221,"metadata":{"connectionId":1,"message":{"seq":1987,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js","sourceReference":406266813}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103221,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js"},"level":0} {"tag":"dap.send","timestamp":1588425103221,"metadata":{"connectionId":1,"message":{"seq":1988,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103222,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/test/common/utils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/test/common/utils.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103222,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103222,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/tokenization.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/tokenization.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/tokenization.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/tokenization.ts","sourceMapSources":["vs/editor/common/modes/supports/tokenization.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103223,"metadata":{"connectionId":1,"message":{"seq":1989,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js","sourceReference":1508053192}}}},"level":0} {"tag":"dap.send","timestamp":1588425103223,"metadata":{"connectionId":1,"message":{"seq":1990,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/test/common/utils.js","path":"/Users/roblou/code/vscode/out/vs/base/test/common/utils.js","sourceReference":497227524}}}},"level":0} {"tag":"dap.send","timestamp":1588425103223,"metadata":{"connectionId":1,"message":{"seq":1991,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/tokenization.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/tokenization.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103223,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103223,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/lineTokens.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/lineTokens.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/lineTokens.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/lineTokens.ts","sourceMapSources":["vs/editor/common/core/lineTokens.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103223,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js"},"level":0} {"tag":"dap.send","timestamp":1588425103226,"metadata":{"connectionId":1,"message":{"seq":1992,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/lineTokens.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/lineTokens.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103226,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103226,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/search/common/searchHelpers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/searchHelpers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchHelpers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchHelpers.ts","sourceMapSources":["vs/workbench/services/search/common/searchHelpers.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103226,"metadata":{"connectionId":1,"message":{"seq":1993,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js","sourceReference":1475282260}}}},"level":0} {"tag":"dap.send","timestamp":1588425103227,"metadata":{"connectionId":1,"message":{"seq":1994,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchHelpers.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/searchHelpers.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103227,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103228,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103228,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/test/common/utils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/test/common/utils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/test/common/utils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/test/common/utils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/test/common/utils.ts","sourceMapSources":["vs/base/test/common/utils.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103228,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js"},"level":0} {"tag":"dap.send","timestamp":1588425103228,"metadata":{"connectionId":1,"message":{"seq":1995,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/test/common/utils.ts","path":"/Users/roblou/code/vscode/src/vs/base/test/common/utils.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103228,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103228,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsCenter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCenter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsCenter.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103229,"metadata":{"connectionId":1,"message":{"seq":1996,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js","sourceReference":100296407}}}},"level":0} {"tag":"dap.send","timestamp":1588425103229,"metadata":{"connectionId":1,"message":{"seq":1997,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103229,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425103230,"metadata":{"connectionId":1,"message":{"seq":1998,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js","sourceReference":1780198578}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103231,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103231,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsAlerts.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsAlerts.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsAlerts.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103231,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js"},"level":0} {"tag":"dap.send","timestamp":1588425103231,"metadata":{"connectionId":1,"message":{"seq":1999,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js","sourceReference":1062511891}}}},"level":0} {"tag":"dap.send","timestamp":1588425103231,"metadata":{"connectionId":1,"message":{"seq":2000,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103232,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103232,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsStatus.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsStatus.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsStatus.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103233,"metadata":{"connectionId":1,"message":{"seq":2001,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103233,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103233,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsCommands.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103233,"metadata":{"connectionId":1,"message":{"seq":2002,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js","sourceReference":1015668918}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103234,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js"},"level":0} {"tag":"dap.send","timestamp":1588425103234,"metadata":{"connectionId":1,"message":{"seq":2003,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103234,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103234,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsToasts.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsToasts.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsToasts.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103235,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js"},"level":0} {"tag":"dap.send","timestamp":1588425103236,"metadata":{"connectionId":1,"message":{"seq":2004,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103236,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js"},"level":0} {"tag":"dap.send","timestamp":1588425103236,"metadata":{"connectionId":1,"message":{"seq":2005,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","path":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","sourceReference":1852877222}}}},"level":0} {"tag":"dap.send","timestamp":1588425103236,"metadata":{"connectionId":1,"message":{"seq":2006,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js","sourceReference":1721690023}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103237,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103238,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/style.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/style.js"},"level":0} {"tag":"dap.send","timestamp":1588425103239,"metadata":{"connectionId":1,"message":{"seq":2007,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js","path":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js","sourceReference":1278766618}}}},"level":0} {"tag":"dap.send","timestamp":1588425103244,"metadata":{"connectionId":1,"message":{"seq":2008,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js","sourceReference":2113386443}}}},"level":0} {"tag":"dap.send","timestamp":1588425103244,"metadata":{"connectionId":1,"message":{"seq":2009,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/style.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/style.js","sourceReference":365983601}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103244,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103245,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/configuration/common/configurationModels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/configuration/common/configurationModels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationModels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationModels.ts","sourceMapSources":["vs/platform/configuration/common/configurationModels.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103245,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103245,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/config/configuration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/config/configuration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/config/configuration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/config/configuration.ts","sourceMapSources":["vs/editor/browser/config/configuration.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103245,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103245,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/instantiation/common/instantiationService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","sourceMapSources":["vs/platform/instantiation/common/instantiationService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103245,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103245,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/config/fontInfo.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/config/fontInfo.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/config/fontInfo.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/config/fontInfo.ts","sourceMapSources":["vs/editor/common/config/fontInfo.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103245,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js"},"level":0} {"tag":"dap.send","timestamp":1588425103246,"metadata":{"connectionId":1,"message":{"seq":2010,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationModels.ts","path":"/Users/roblou/code/vscode/src/vs/platform/configuration/common/configurationModels.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103246,"metadata":{"connectionId":1,"message":{"seq":2011,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/config/configuration.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/config/configuration.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103246,"metadata":{"connectionId":1,"message":{"seq":2012,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103246,"metadata":{"connectionId":1,"message":{"seq":2013,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/config/fontInfo.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/config/fontInfo.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103246,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103246,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/style.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/style.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/style.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/style.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/style.ts","sourceMapSources":["vs/workbench/browser/style.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103247,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js"},"level":0} {"tag":"dap.send","timestamp":1588425103247,"metadata":{"connectionId":1,"message":{"seq":2014,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/style.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/style.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103248,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/layout.js"},"level":0} {"tag":"dap.send","timestamp":1588425103248,"metadata":{"connectionId":1,"message":{"seq":2015,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js","sourceReference":1222695929}}}},"level":0} {"tag":"dap.send","timestamp":1588425103248,"metadata":{"connectionId":1,"message":{"seq":2016,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js","sourceReference":1314333882}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103249,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103249,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/common/configurationEditingService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationEditingService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService.ts","sourceMapSources":["vs/workbench/services/configuration/common/configurationEditingService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103249,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js"},"level":0} {"tag":"dap.send","timestamp":1588425103250,"metadata":{"connectionId":1,"message":{"seq":2017,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103250,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103250,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/common/configurationModels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/common/configurationModels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationModels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationModels.ts","sourceMapSources":["vs/workbench/services/configuration/common/configurationModels.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103250,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js"},"level":0} {"tag":"dap.send","timestamp":1588425103251,"metadata":{"connectionId":1,"message":{"seq":2018,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationModels.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/common/configurationModels.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103251,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103254,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103254,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/layout.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/layout.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/layout.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/layout.ts","sourceMapSources":["vs/workbench/browser/layout.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103255,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js"},"level":0} {"tag":"dap.send","timestamp":1588425103255,"metadata":{"connectionId":1,"message":{"seq":2019,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","sourceReference":353908098}}}},"level":0} {"tag":"dap.send","timestamp":1588425103256,"metadata":{"connectionId":1,"message":{"seq":2020,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js","sourceReference":1698376931}}}},"level":0} {"tag":"dap.send","timestamp":1588425103256,"metadata":{"connectionId":1,"message":{"seq":2021,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js","path":"/Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js","sourceReference":2141804865}}}},"level":0} {"tag":"dap.send","timestamp":1588425103256,"metadata":{"connectionId":1,"message":{"seq":2022,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js","sourceReference":541407979}}}},"level":0} {"tag":"dap.send","timestamp":1588425103257,"metadata":{"connectionId":1,"message":{"seq":2023,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/layout.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/layout.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103258,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103258,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/nullMode.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/nullMode.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/nullMode.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/nullMode.ts","sourceMapSources":["vs/editor/common/modes/nullMode.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103258,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/stream.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/stream.js"},"level":0} {"tag":"dap.send","timestamp":1588425103261,"metadata":{"connectionId":1,"message":{"seq":2024,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js","sourceReference":1532381549}}}},"level":0} {"tag":"dap.send","timestamp":1588425103261,"metadata":{"connectionId":1,"message":{"seq":2025,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/stream.js","path":"/Users/roblou/code/vscode/out/vs/base/common/stream.js","sourceReference":1210522781}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103262,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103262,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/driver/node/driver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/driver/node/driver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/driver/node/driver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/driver/node/driver.ts","sourceMapSources":["vs/platform/driver/node/driver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103266,"metadata":{"connectionId":1,"message":{"seq":2026,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/nullMode.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/nullMode.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103266,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425103276,"metadata":{"connectionId":1,"message":{"seq":2027,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/driver/node/driver.ts","path":"/Users/roblou/code/vscode/src/vs/platform/driver/node/driver.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103276,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103276,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/storage/node/storage.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/storage/node/storage.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/storage/node/storage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/storage/node/storage.ts","sourceMapSources":["vs/base/parts/storage/node/storage.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103276,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103277,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/io.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/common/io.js"},"level":0} {"tag":"dap.send","timestamp":1588425103277,"metadata":{"connectionId":1,"message":{"seq":2028,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js","sourceReference":1338820568}}}},"level":0} {"tag":"dap.send","timestamp":1588425103277,"metadata":{"connectionId":1,"message":{"seq":2029,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/storage/node/storage.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/storage/node/storage.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103278,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103278,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configuration/browser/configuration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configuration/browser/configuration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configuration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configuration.ts","sourceMapSources":["vs/workbench/services/configuration/browser/configuration.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103278,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js"},"level":0} {"tag":"dap.send","timestamp":1588425103278,"metadata":{"connectionId":1,"message":{"seq":2030,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js","sourceReference":2084697565}}}},"level":0} {"tag":"dap.send","timestamp":1588425103279,"metadata":{"connectionId":1,"message":{"seq":2031,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/common/io.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/common/io.js","sourceReference":392730553}}}},"level":0} {"tag":"dap.send","timestamp":1588425103279,"metadata":{"connectionId":1,"message":{"seq":2032,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configuration.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configuration/browser/configuration.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103279,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103279,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/stream.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/stream.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/stream.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/stream.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/stream.ts","sourceMapSources":["vs/base/common/stream.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103279,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js"},"level":0} {"tag":"dap.send","timestamp":1588425103280,"metadata":{"connectionId":1,"message":{"seq":2033,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js","path":"/Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js","sourceReference":875135235}}}},"level":0} {"tag":"dap.send","timestamp":1588425103281,"metadata":{"connectionId":1,"message":{"seq":2034,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/stream.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/stream.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103281,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103281,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/diskFileSystemProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/diskFileSystemProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/diskFileSystemProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/diskFileSystemProvider.ts","sourceMapSources":["vs/platform/files/node/diskFileSystemProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103281,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103282,"metadata":{"connectionId":1,"message":{"seq":2035,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js","sourceReference":963352683}}}},"level":0} {"tag":"dap.send","timestamp":1588425103282,"metadata":{"connectionId":1,"message":{"seq":2036,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/diskFileSystemProvider.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/diskFileSystemProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103282,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103282,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/common/io.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/common/io.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/common/io.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/common/io.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/common/io.ts","sourceMapSources":["vs/platform/files/common/io.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103283,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103283,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeActions/common/codeActionsContribution.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeActions/common/codeActionsContribution.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution.ts","sourceMapSources":["vs/workbench/contrib/codeActions/common/codeActionsContribution.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103283,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js"},"level":0} {"tag":"dap.send","timestamp":1588425103284,"metadata":{"connectionId":1,"message":{"seq":2037,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js","sourceReference":476201610}}}},"level":0} {"tag":"dap.send","timestamp":1588425103284,"metadata":{"connectionId":1,"message":{"seq":2038,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/common/io.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/common/io.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103284,"metadata":{"connectionId":1,"message":{"seq":2039,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103284,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103284,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/driver/browser/baseDriver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/driver/browser/baseDriver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/driver/browser/baseDriver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/driver/browser/baseDriver.ts","sourceMapSources":["vs/platform/driver/browser/baseDriver.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103285,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js"},"level":0} {"tag":"dap.send","timestamp":1588425103285,"metadata":{"connectionId":1,"message":{"seq":2040,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js","sourceReference":1178596454}}}},"level":0} {"tag":"dap.send","timestamp":1588425103286,"metadata":{"connectionId":1,"message":{"seq":2041,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/driver/browser/baseDriver.ts","path":"/Users/roblou/code/vscode/src/vs/platform/driver/browser/baseDriver.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103286,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103286,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/electron-browser/ipc.electron-browser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/electron-browser/ipc.electron-browser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/electron-browser/ipc.electron-browser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/electron-browser/ipc.electron-browser.ts","sourceMapSources":["vs/base/parts/ipc/electron-browser/ipc.electron-browser.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103287,"metadata":{"connectionId":1,"message":{"seq":2042,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js","sourceReference":2132415754}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103287,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js"},"level":0} {"tag":"dap.send","timestamp":1588425103288,"metadata":{"connectionId":1,"message":{"seq":2043,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/electron-browser/ipc.electron-browser.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/electron-browser/ipc.electron-browser.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103288,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103288,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/textEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/textEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/textEditorModel.ts","sourceMapSources":["vs/workbench/common/editor/textEditorModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103289,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js"},"level":0} {"tag":"dap.send","timestamp":1588425103289,"metadata":{"connectionId":1,"message":{"seq":2044,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/textEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/textEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103289,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103289,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/indentationGuesser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/indentationGuesser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/indentationGuesser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/indentationGuesser.ts","sourceMapSources":["vs/editor/common/model/indentationGuesser.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103290,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js"},"level":0} {"tag":"dap.send","timestamp":1588425103291,"metadata":{"connectionId":1,"message":{"seq":2045,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js","sourceReference":1152921937}}}},"level":0} {"tag":"dap.send","timestamp":1588425103291,"metadata":{"connectionId":1,"message":{"seq":2046,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js","sourceReference":1935249214}}}},"level":0} {"tag":"dap.send","timestamp":1588425103291,"metadata":{"connectionId":1,"message":{"seq":2047,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/indentationGuesser.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/indentationGuesser.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103291,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103291,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textfile/common/textFileEditorModelManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileEditorModelManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts","sourceMapSources":["vs/workbench/services/textfile/common/textFileEditorModelManager.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103291,"metadata":{"connectionId":1,"message":{"seq":2048,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js","sourceReference":2103138358}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103292,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js"},"level":0} {"tag":"dap.send","timestamp":1588425103292,"metadata":{"connectionId":1,"message":{"seq":2049,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103292,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103293,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103293,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/intervalTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/intervalTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/intervalTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/intervalTree.ts","sourceMapSources":["vs/editor/common/model/intervalTree.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103294,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js"},"level":0} {"tag":"dap.send","timestamp":1588425103294,"metadata":{"connectionId":1,"message":{"seq":2050,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","sourceReference":1534680434}}}},"level":0} {"tag":"dap.send","timestamp":1588425103294,"metadata":{"connectionId":1,"message":{"seq":2051,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js","path":"/Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js","sourceReference":1711310095}}}},"level":0} {"tag":"dap.send","timestamp":1588425103294,"metadata":{"connectionId":1,"message":{"seq":2052,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js","sourceReference":1645874964}}}},"level":0} {"tag":"dap.send","timestamp":1588425103295,"metadata":{"connectionId":1,"message":{"seq":2053,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/intervalTree.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/intervalTree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103295,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103295,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/textModelTokens.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelTokens.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelTokens.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/textModelTokens.ts","sourceMapSources":["vs/editor/common/model/textModelTokens.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103295,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103295,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/textModelEvents.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelEvents.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelEvents.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/textModelEvents.ts","sourceMapSources":["vs/editor/common/model/textModelEvents.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103295,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js"},"level":0} {"tag":"dap.send","timestamp":1588425103296,"metadata":{"connectionId":1,"message":{"seq":2054,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelTokens.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelTokens.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103296,"metadata":{"connectionId":1,"message":{"seq":2055,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelEvents.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelEvents.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103296,"metadata":{"connectionId":1,"message":{"seq":2056,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","sourceReference":1735175758}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103297,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103297,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103297,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts","sourceMapSources":["vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103297,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103297,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/keybindingLabels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/keybindingLabels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/keybindingLabels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/keybindingLabels.ts","sourceMapSources":["vs/base/common/keybindingLabels.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103298,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js"},"level":0} {"tag":"dap.send","timestamp":1588425103299,"metadata":{"connectionId":1,"message":{"seq":2057,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103299,"metadata":{"connectionId":1,"message":{"seq":2058,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/keybindingLabels.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/keybindingLabels.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103299,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103299,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/baseResolvedKeybinding.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/baseResolvedKeybinding.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/baseResolvedKeybinding.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/baseResolvedKeybinding.ts","sourceMapSources":["vs/platform/keybinding/common/baseResolvedKeybinding.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103300,"metadata":{"connectionId":1,"message":{"seq":2059,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js","sourceReference":10281513}}}},"level":0} {"tag":"dap.send","timestamp":1588425103300,"metadata":{"connectionId":1,"message":{"seq":2060,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js","sourceReference":2083948994}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103300,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uriIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uriIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425103300,"metadata":{"connectionId":1,"message":{"seq":2061,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/baseResolvedKeybinding.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/baseResolvedKeybinding.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103301,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103301,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts","sourceMapSources":["vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103301,"metadata":{"connectionId":1,"message":{"seq":2062,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103301,"metadata":{"connectionId":1,"message":{"seq":2063,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uriIpc.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uriIpc.js","sourceReference":1717674882}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103302,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/normalization.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/normalization.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103302,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103302,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports.ts","sourceMapSources":["vs/editor/common/modes/supports.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103302,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103302,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/textModelSearch.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textModelSearch.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelSearch.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/textModelSearch.ts","sourceMapSources":["vs/editor/common/model/textModelSearch.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103303,"metadata":{"connectionId":1,"message":{"seq":2064,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103303,"metadata":{"connectionId":1,"message":{"seq":2065,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelSearch.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/textModelSearch.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103303,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js"},"level":0} {"tag":"dap.send","timestamp":1588425103303,"metadata":{"connectionId":1,"message":{"seq":2066,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/normalization.js","path":"/Users/roblou/code/vscode/out/vs/base/common/normalization.js","sourceReference":1589748073}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103304,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103304,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uriIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uriIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uriIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uriIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uriIpc.ts","sourceMapSources":["vs/base/common/uriIpc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103304,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js"},"level":0} {"tag":"dap.send","timestamp":1588425103305,"metadata":{"connectionId":1,"message":{"seq":2067,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uriIpc.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uriIpc.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103305,"metadata":{"connectionId":1,"message":{"seq":2068,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js","sourceReference":521504096}}}},"level":0} {"tag":"dap.send","timestamp":1588425103305,"metadata":{"connectionId":1,"message":{"seq":2069,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js","sourceReference":2095633791}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103305,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103306,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103306,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/normalization.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/normalization.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/normalization.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/normalization.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/normalization.ts","sourceMapSources":["vs/base/common/normalization.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103306,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js"},"level":0} {"tag":"dap.send","timestamp":1588425103307,"metadata":{"connectionId":1,"message":{"seq":2070,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/normalization.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/normalization.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103307,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103307,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/richEditBrackets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/richEditBrackets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/richEditBrackets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/richEditBrackets.ts","sourceMapSources":["vs/editor/common/modes/supports/richEditBrackets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103307,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425103308,"metadata":{"connectionId":1,"message":{"seq":2071,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/richEditBrackets.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/richEditBrackets.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103308,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103308,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionHostProtocol.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionHostProtocol.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionHostProtocol.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103309,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js"},"level":0} {"tag":"dap.send","timestamp":1588425103309,"metadata":{"connectionId":1,"message":{"seq":2072,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","sourceReference":1098325323}}}},"level":0} {"tag":"dap.send","timestamp":1588425103309,"metadata":{"connectionId":1,"message":{"seq":2073,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js","sourceReference":431084959}}}},"level":0} {"tag":"dap.send","timestamp":1588425103309,"metadata":{"connectionId":1,"message":{"seq":2074,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js","sourceReference":14069202}}}},"level":0} {"tag":"dap.send","timestamp":1588425103310,"metadata":{"connectionId":1,"message":{"seq":2075,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103310,"metadata":{"connectionId":1,"message":{"seq":2076,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js","sourceReference":1548548190}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103311,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103311,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103311,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/common/ipc.net.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.net.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.net.ts","sourceMapSources":["vs/base/parts/ipc/common/ipc.net.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103312,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js"},"level":0} {"tag":"dap.send","timestamp":1588425103312,"metadata":{"connectionId":1,"message":{"seq":2077,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.net.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/common/ipc.net.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103312,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103312,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/extHost.protocol.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHost.protocol.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHost.protocol.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/extHost.protocol.ts","sourceMapSources":["vs/workbench/api/common/extHost.protocol.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103312,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103312,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionDescriptionRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionDescriptionRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103313,"metadata":{"connectionId":1,"message":{"seq":2078,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js","sourceReference":516301978}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103313,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js"},"level":0} {"tag":"dap.send","timestamp":1588425103314,"metadata":{"connectionId":1,"message":{"seq":2079,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHost.protocol.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHost.protocol.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103314,"metadata":{"connectionId":1,"message":{"seq":2080,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103314,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103314,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/remoteConsoleUtil.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/remoteConsoleUtil.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.ts","sourceMapSources":["vs/workbench/services/extensions/common/remoteConsoleUtil.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103314,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js"},"level":0} {"tag":"dap.send","timestamp":1588425103315,"metadata":{"connectionId":1,"message":{"seq":2081,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103315,"metadata":{"connectionId":1,"message":{"seq":2082,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js","sourceReference":1762442558}}}},"level":0} {"tag":"dap.send","timestamp":1588425103315,"metadata":{"connectionId":1,"message":{"seq":2083,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js","sourceReference":600753284}}}},"level":0} {"tag":"dap.send","timestamp":1588425103315,"metadata":{"connectionId":1,"message":{"seq":2084,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js","sourceReference":894014169}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103315,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103315,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/extensionDevOptions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionDevOptions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.ts","sourceMapSources":["vs/workbench/services/extensions/common/extensionDevOptions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103316,"metadata":{"connectionId":1,"message":{"seq":2085,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103317,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103317,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/node/extensionPoints.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/node/extensionPoints.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/node/extensionPoints.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/node/extensionPoints.ts","sourceMapSources":["vs/workbench/services/extensions/node/extensionPoints.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103317,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103317,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103317,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/node/commonProperties.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/node/commonProperties.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/commonProperties.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/node/commonProperties.ts","sourceMapSources":["vs/platform/telemetry/node/commonProperties.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103317,"metadata":{"connectionId":1,"message":{"seq":2086,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/node/extensionPoints.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/node/extensionPoints.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103317,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103317,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/selectBox/selectBox.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBox.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBox.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBox.ts","sourceMapSources":["vs/base/browser/ui/selectBox/selectBox.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103318,"metadata":{"connectionId":1,"message":{"seq":2087,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/commonProperties.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/node/commonProperties.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103318,"metadata":{"connectionId":1,"message":{"seq":2088,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBox.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBox.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103319,"metadata":{"connectionId":1,"message":{"seq":2089,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","sourceReference":1547808899}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103319,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js"},"level":0} {"tag":"dap.send","timestamp":1588425103319,"metadata":{"connectionId":1,"message":{"seq":2090,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js","sourceReference":132014289}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103320,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/touch.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/touch.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103320,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103320,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/rpcProtocol.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.ts","sourceMapSources":["vs/workbench/services/extensions/common/rpcProtocol.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103321,"metadata":{"connectionId":1,"message":{"seq":2091,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103321,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js"},"level":0} {"tag":"dap.send","timestamp":1588425103321,"metadata":{"connectionId":1,"message":{"seq":2092,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/touch.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/touch.js","sourceReference":2055294015}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103321,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103321,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/extHostCustomers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostCustomers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostCustomers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/extHostCustomers.ts","sourceMapSources":["vs/workbench/api/common/extHostCustomers.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103322,"metadata":{"connectionId":1,"message":{"seq":2093,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostCustomers.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostCustomers.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103322,"metadata":{"connectionId":1,"message":{"seq":2094,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js","path":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js","sourceReference":76352375}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103322,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103322,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/touch.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/touch.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/touch.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/touch.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/touch.ts","sourceMapSources":["vs/base/browser/touch.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103323,"metadata":{"connectionId":1,"message":{"seq":2095,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/touch.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/touch.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103323,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103323,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/contextview/browser/contextMenuHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/contextview/browser/contextMenuHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuHandler.ts","sourceMapSources":["vs/platform/contextview/browser/contextMenuHandler.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103323,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js"},"level":0} {"tag":"dap.send","timestamp":1588425103323,"metadata":{"connectionId":1,"message":{"seq":2096,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuHandler.ts","path":"/Users/roblou/code/vscode/src/vs/platform/contextview/browser/contextMenuHandler.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103323,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js"},"level":0} {"tag":"dap.send","timestamp":1588425103324,"metadata":{"connectionId":1,"message":{"seq":2097,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js","sourceReference":1779905041}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103324,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103324,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/contextmenu/common/contextmenu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/contextmenu/common/contextmenu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/contextmenu/common/contextmenu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/contextmenu/common/contextmenu.ts","sourceMapSources":["vs/base/parts/contextmenu/common/contextmenu.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103325,"metadata":{"connectionId":1,"message":{"seq":2098,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/contextmenu/common/contextmenu.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/contextmenu/common/contextmenu.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103325,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103325,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/menu/menu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menu.ts","sourceMapSources":["vs/base/browser/ui/menu/menu.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103325,"metadata":{"connectionId":1,"message":{"seq":2099,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menu.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menu.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103325,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js"},"level":0} {"tag":"dap.send","timestamp":1588425103326,"metadata":{"connectionId":1,"message":{"seq":2100,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menu.js","sourceReference":1452688222}}}},"level":0} {"tag":"dap.send","timestamp":1588425103326,"metadata":{"connectionId":1,"message":{"seq":2101,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js","path":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js","sourceReference":1746263445}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103326,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103327,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103327,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/url/common/urlService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/url/common/urlService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/url/common/urlService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/url/common/urlService.ts","sourceMapSources":["vs/platform/url/common/urlService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103327,"metadata":{"connectionId":1,"message":{"seq":2102,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/url/common/urlService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/url/common/urlService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103328,"metadata":{"connectionId":1,"message":{"seq":2103,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js","sourceReference":428068890}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103328,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103328,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103328,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configurationResolver/common/variableResolver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/variableResolver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.ts","sourceMapSources":["vs/workbench/services/configurationResolver/common/variableResolver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103329,"metadata":{"connectionId":1,"message":{"seq":2104,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js","sourceReference":58906980}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103329,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js"},"level":0} {"tag":"dap.send","timestamp":1588425103329,"metadata":{"connectionId":1,"message":{"seq":2105,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103329,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103330,"metadata":{"connectionId":1,"message":{"seq":2106,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js","path":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js","sourceReference":1745690959}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103330,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103330,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/quickinput/common/quickInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/common/quickInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/common/quickInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/quickinput/common/quickInput.ts","sourceMapSources":["vs/base/parts/quickinput/common/quickInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103331,"metadata":{"connectionId":1,"message":{"seq":2107,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/common/quickInput.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/common/quickInput.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103331,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js"},"level":0} {"tag":"dap.send","timestamp":1588425103331,"metadata":{"connectionId":1,"message":{"seq":2108,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js","sourceReference":1565892346}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103331,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103331,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/extensionManagement/common/configRemotes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/extensionManagement/common/configRemotes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/configRemotes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/configRemotes.ts","sourceMapSources":["vs/platform/extensionManagement/common/configRemotes.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103332,"metadata":{"connectionId":1,"message":{"seq":2109,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js","sourceReference":1801867553}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103333,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js"},"level":0} {"tag":"dap.send","timestamp":1588425103333,"metadata":{"connectionId":1,"message":{"seq":2110,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/configRemotes.ts","path":"/Users/roblou/code/vscode/src/vs/platform/extensionManagement/common/configRemotes.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103333,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103333,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts","sourceMapSources":["vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103334,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103334,"metadata":{"connectionId":1,"message":{"seq":2111,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103334,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js"},"level":0} {"tag":"dap.send","timestamp":1588425103335,"metadata":{"connectionId":1,"message":{"seq":2112,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js","sourceReference":1054108063}}}},"level":0} {"tag":"dap.send","timestamp":1588425103335,"metadata":{"connectionId":1,"message":{"seq":2113,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js","sourceReference":1288527320}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103335,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103335,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/request/browser/request.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/request/browser/request.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/request/browser/request.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/request/browser/request.ts","sourceMapSources":["vs/base/parts/request/browser/request.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103336,"metadata":{"connectionId":1,"message":{"seq":2114,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/request/browser/request.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/request/browser/request.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103336,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425103336,"metadata":{"connectionId":1,"message":{"seq":2115,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js","sourceReference":1690623115}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103336,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103336,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/storage/common/storage.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/storage/common/storage.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/storage/common/storage.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/storage/common/storage.ts","sourceMapSources":["vs/base/parts/storage/common/storage.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103337,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103337,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/explorerModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/explorerModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerModel.ts","sourceMapSources":["vs/workbench/contrib/files/common/explorerModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103337,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js"},"level":0} {"tag":"dap.send","timestamp":1588425103338,"metadata":{"connectionId":1,"message":{"seq":2116,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/storage/common/storage.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/storage/common/storage.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103338,"metadata":{"connectionId":1,"message":{"seq":2117,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/explorerModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103338,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103338,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/backup/common/backupTracker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupTracker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupTracker.ts","sourceMapSources":["vs/workbench/contrib/backup/common/backupTracker.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103338,"metadata":{"connectionId":1,"message":{"seq":2118,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js","sourceReference":942539457}}}},"level":0} {"tag":"dap.send","timestamp":1588425103338,"metadata":{"connectionId":1,"message":{"seq":2119,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js","sourceReference":43418210}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103339,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/files.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/files.js"},"level":0} {"tag":"dap.send","timestamp":1588425103339,"metadata":{"connectionId":1,"message":{"seq":2120,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupTracker.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/backup/common/backupTracker.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103339,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103340,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103340,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/editors/textFileEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.ts","sourceMapSources":["vs/workbench/contrib/files/browser/editors/textFileEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103340,"metadata":{"connectionId":1,"message":{"seq":2121,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/files.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/files.js","sourceReference":120750776}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103340,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103341,"metadata":{"connectionId":1,"message":{"seq":2122,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103341,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103341,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103341,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.ts","sourceMapSources":["vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103342,"metadata":{"connectionId":1,"message":{"seq":2123,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js","sourceReference":1018986074}}}},"level":0} {"tag":"dap.send","timestamp":1588425103342,"metadata":{"connectionId":1,"message":{"seq":2124,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js","sourceReference":1059821778}}}},"level":0} {"tag":"dap.send","timestamp":1588425103342,"metadata":{"connectionId":1,"message":{"seq":2125,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103342,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103342,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/files.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/files.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/files.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/files.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/files.ts","sourceMapSources":["vs/platform/files/node/files.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103343,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103343,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103343,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/baseEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/baseEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/baseEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/baseEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/baseEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103343,"metadata":{"connectionId":1,"message":{"seq":2126,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/files.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/files.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103343,"metadata":{"connectionId":1,"message":{"seq":2127,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js","sourceReference":1066185709}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103343,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js"},"level":0} {"tag":"dap.send","timestamp":1588425103344,"metadata":{"connectionId":1,"message":{"seq":2128,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/baseEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/baseEditor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103344,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103344,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/binaryEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/binaryEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/binaryEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/binaryEditorModel.ts","sourceMapSources":["vs/workbench/common/editor/binaryEditorModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103344,"metadata":{"connectionId":1,"message":{"seq":2129,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js","sourceReference":153567338}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103345,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103345,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103345,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/node/terminalProcess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalProcess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts","sourceMapSources":["vs/workbench/contrib/terminal/node/terminalProcess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103345,"metadata":{"connectionId":1,"message":{"seq":2130,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/binaryEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/binaryEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103345,"metadata":{"connectionId":1,"message":{"seq":2131,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js","sourceReference":1582302712}}}},"level":0} {"tag":"dap.send","timestamp":1588425103345,"metadata":{"connectionId":1,"message":{"seq":2132,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js","sourceReference":351819970}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103346,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js"},"level":0} {"tag":"dap.send","timestamp":1588425103346,"metadata":{"connectionId":1,"message":{"seq":2133,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103347,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103347,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103347,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/node/terminalEnvironment.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/node/terminalEnvironment.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts","sourceMapSources":["vs/workbench/contrib/terminal/node/terminalEnvironment.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103347,"metadata":{"connectionId":1,"message":{"seq":2134,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js","sourceReference":197805517}}}},"level":0} {"tag":"dap.send","timestamp":1588425103347,"metadata":{"connectionId":1,"message":{"seq":2135,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","sourceReference":1042615785}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103348,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js"},"level":0} {"tag":"dap.send","timestamp":1588425103348,"metadata":{"connectionId":1,"message":{"seq":2136,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103348,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103348,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/terminalEnvironment.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalEnvironment.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/terminalEnvironment.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103354,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103354,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103354,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/electron-browser/terminalRemote.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/electron-browser/terminalRemote.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote.ts","sourceMapSources":["vs/workbench/contrib/terminal/electron-browser/terminalRemote.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103354,"metadata":{"connectionId":1,"message":{"seq":2137,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103354,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js"},"level":0} {"tag":"dap.send","timestamp":1588425103355,"metadata":{"connectionId":1,"message":{"seq":2138,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","sourceReference":1355579906}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103355,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425103356,"metadata":{"connectionId":1,"message":{"seq":2139,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103356,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103356,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebookBrowser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookBrowser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebookBrowser.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103356,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js"},"level":0} {"tag":"dap.send","timestamp":1588425103356,"metadata":{"connectionId":1,"message":{"seq":2140,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js","sourceReference":711454627}}}},"level":0} {"tag":"dap.send","timestamp":1588425103356,"metadata":{"connectionId":1,"message":{"seq":2141,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js","sourceReference":2110130920}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103357,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103357,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/output/outputRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/output/outputRenderer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103357,"metadata":{"connectionId":1,"message":{"seq":2142,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103358,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js"},"level":0} {"tag":"dap.send","timestamp":1588425103358,"metadata":{"connectionId":1,"message":{"seq":2143,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103358,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103358,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103358,"metadata":{"connectionId":1,"message":{"seq":2144,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","sourceReference":1226353599}}}},"level":0} {"tag":"dap.send","timestamp":1588425103358,"metadata":{"connectionId":1,"message":{"seq":2145,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","sourceReference":2084605313}}}},"level":0} {"tag":"dap.send","timestamp":1588425103358,"metadata":{"connectionId":1,"message":{"seq":2146,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js","sourceReference":834814466}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103359,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103359,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103359,"metadata":{"connectionId":1,"message":{"seq":2147,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103360,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103360,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/constants.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/constants.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/constants.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/constants.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/constants.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103360,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103361,"metadata":{"connectionId":1,"message":{"seq":2148,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103361,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103361,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103361,"metadata":{"connectionId":1,"message":{"seq":2149,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/constants.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/constants.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103361,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103361,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103361,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js"},"level":0} {"tag":"dap.send","timestamp":1588425103362,"metadata":{"connectionId":1,"message":{"seq":2150,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103362,"metadata":{"connectionId":1,"message":{"seq":2151,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103362,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/decoder.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/decoder.js"},"level":0} {"tag":"dap.send","timestamp":1588425103363,"metadata":{"connectionId":1,"message":{"seq":2152,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","sourceReference":977310663}}}},"level":0} {"tag":"dap.send","timestamp":1588425103363,"metadata":{"connectionId":1,"message":{"seq":2153,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js","sourceReference":1512947393}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103364,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103364,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebookEditorExtensions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebookEditorExtensions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103364,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js"},"level":0} {"tag":"dap.send","timestamp":1588425103364,"metadata":{"connectionId":1,"message":{"seq":2154,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/decoder.js","path":"/Users/roblou/code/vscode/out/vs/base/node/decoder.js","sourceReference":451660454}}}},"level":0} {"tag":"dap.send","timestamp":1588425103365,"metadata":{"connectionId":1,"message":{"seq":2155,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorExtensions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103366,"metadata":{"connectionId":1,"message":{"seq":2156,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js","sourceReference":2084030742}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103366,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103366,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103366,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103366,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103366,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/baseWebviewElement.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/baseWebviewElement.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/baseWebviewElement.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103367,"metadata":{"connectionId":1,"message":{"seq":2157,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103367,"metadata":{"connectionId":1,"message":{"seq":2158,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103367,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103367,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/decoder.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/decoder.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/decoder.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/decoder.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/decoder.ts","sourceMapSources":["vs/base/node/decoder.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103368,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js"},"level":0} {"tag":"dap.send","timestamp":1588425103368,"metadata":{"connectionId":1,"message":{"seq":2159,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js","sourceReference":648276643}}}},"level":0} {"tag":"dap.send","timestamp":1588425103368,"metadata":{"connectionId":1,"message":{"seq":2160,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/decoder.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/decoder.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103368,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103368,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/common/resourceLoader.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/resourceLoader.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader.ts","sourceMapSources":["vs/workbench/contrib/webview/common/resourceLoader.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103369,"metadata":{"connectionId":1,"message":{"seq":2161,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103369,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js"},"level":0} {"tag":"dap.send","timestamp":1588425103370,"metadata":{"connectionId":1,"message":{"seq":2162,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js","sourceReference":1593325474}}}},"level":0} {"tag":"dap.send","timestamp":1588425103370,"metadata":{"connectionId":1,"message":{"seq":2163,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js","sourceReference":133554732}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103370,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103370,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103371,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103372,"metadata":{"connectionId":1,"message":{"seq":2164,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103372,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103372,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/electron-browser/webviewProtocols.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/electron-browser/webviewProtocols.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewProtocols.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewProtocols.ts","sourceMapSources":["vs/workbench/contrib/webview/electron-browser/webviewProtocols.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103372,"metadata":{"connectionId":1,"message":{"seq":2165,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewProtocols.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewProtocols.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103372,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103373,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103373,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/common/portMapping.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/portMapping.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/portMapping.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/portMapping.ts","sourceMapSources":["vs/workbench/contrib/webview/common/portMapping.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103374,"metadata":{"connectionId":1,"message":{"seq":2166,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js","sourceReference":1921391187}}}},"level":0} {"tag":"dap.send","timestamp":1588425103374,"metadata":{"connectionId":1,"message":{"seq":2167,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js","sourceReference":1297957649}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103374,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js"},"level":0} {"tag":"dap.send","timestamp":1588425103374,"metadata":{"connectionId":1,"message":{"seq":2168,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/portMapping.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/portMapping.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103375,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103376,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewFindWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewFindWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewFindWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103376,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js"},"level":0} {"tag":"dap.send","timestamp":1588425103376,"metadata":{"connectionId":1,"message":{"seq":2169,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js","sourceReference":527280299}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103376,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103376,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/selectionClipboard.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/selectionClipboard.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/selectionClipboard.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/selectionClipboard.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/selectionClipboard.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103377,"metadata":{"connectionId":1,"message":{"seq":2170,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103377,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js"},"level":0} {"tag":"dap.send","timestamp":1588425103377,"metadata":{"connectionId":1,"message":{"seq":2171,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/selectionClipboard.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/selectionClipboard.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103377,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js"},"level":0} {"tag":"dap.send","timestamp":1588425103378,"metadata":{"connectionId":1,"message":{"seq":2172,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js","sourceReference":1859073393}}}},"level":0} {"tag":"dap.send","timestamp":1588425103378,"metadata":{"connectionId":1,"message":{"seq":2173,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js","sourceReference":471999185}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103378,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103378,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103379,"metadata":{"connectionId":1,"message":{"seq":2174,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103379,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103379,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewElement.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewElement.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewElement.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103379,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js"},"level":0} {"tag":"dap.send","timestamp":1588425103379,"metadata":{"connectionId":1,"message":{"seq":2175,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js","sourceReference":1485813566}}}},"level":0} {"tag":"dap.send","timestamp":1588425103380,"metadata":{"connectionId":1,"message":{"seq":2176,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103380,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103380,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/common/themeing.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/themeing.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/themeing.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/themeing.ts","sourceMapSources":["vs/workbench/contrib/webview/common/themeing.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103380,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425103381,"metadata":{"connectionId":1,"message":{"seq":2177,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/themeing.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/themeing.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103381,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103381,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/browser/webviewIconManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/browser/webviewIconManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts","sourceMapSources":["vs/workbench/contrib/webview/browser/webviewIconManager.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103381,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js"},"level":0} {"tag":"dap.send","timestamp":1588425103382,"metadata":{"connectionId":1,"message":{"seq":2178,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js","sourceReference":1623520899}}}},"level":0} {"tag":"dap.send","timestamp":1588425103382,"metadata":{"connectionId":1,"message":{"seq":2179,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js","sourceReference":679556612}}}},"level":0} {"tag":"dap.send","timestamp":1588425103382,"metadata":{"connectionId":1,"message":{"seq":2180,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103382,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103383,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103383,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/electron-browser/extensionHostProfiler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.ts","sourceMapSources":["vs/workbench/services/extensions/electron-browser/extensionHostProfiler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103384,"metadata":{"connectionId":1,"message":{"seq":2181,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js","sourceReference":309854579}}}},"level":0} {"tag":"dap.send","timestamp":1588425103384,"metadata":{"connectionId":1,"message":{"seq":2182,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js","sourceReference":1640854227}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103384,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425103384,"metadata":{"connectionId":1,"message":{"seq":2183,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHostProfiler.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103385,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103385,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.ts","sourceMapSources":["vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103385,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103385,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/timer/electron-browser/timerService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/timer/electron-browser/timerService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/timer/electron-browser/timerService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/timer/electron-browser/timerService.ts","sourceMapSources":["vs/workbench/services/timer/electron-browser/timerService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103385,"metadata":{"connectionId":1,"message":{"seq":2184,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js","sourceReference":390006158}}}},"level":0} {"tag":"dap.send","timestamp":1588425103385,"metadata":{"connectionId":1,"message":{"seq":2185,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103385,"metadata":{"connectionId":1,"message":{"seq":2186,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/timer/electron-browser/timerService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/timer/electron-browser/timerService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103385,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103385,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/languageFeatureRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageFeatureRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageFeatureRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/languageFeatureRegistry.ts","sourceMapSources":["vs/editor/common/modes/languageFeatureRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103386,"metadata":{"connectionId":1,"message":{"seq":2187,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageFeatureRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageFeatureRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103386,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103386,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/tokenizationRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/tokenizationRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/tokenizationRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/tokenizationRegistry.ts","sourceMapSources":["vs/editor/common/modes/tokenizationRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103387,"metadata":{"connectionId":1,"message":{"seq":2188,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/tokenizationRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/tokenizationRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103501,"metadata":{"connectionId":0,"message":{"seq":20,"type":"event","event":"output","body":{"category":"stderr","output":"(node:7824) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n(node:7824) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425103522,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.154","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/extensions/theme-seti/icons/seti.woff","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547785.558134,"wallTime":1588425103.436545,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"scanDomNode","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":421,"columnNumber":37},{"functionName":"layoutBody","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":204,"columnNumber":39},{"functionName":"layoutBody","scriptId":"302","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js","lineNumber":750,"columnNumber":22},{"functionName":"layout","scriptId":"1275","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","lineNumber":160,"columnNumber":25},{"functionName":"layout","scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","lineNumber":75,"columnNumber":22},{"functionName":"layoutViews","scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","lineNumber":627,"columnNumber":25},{"functionName":"layout","scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","lineNumber":288,"columnNumber":17},{"functionName":"layout","scriptId":"1275","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","lineNumber":355,"columnNumber":27},{"functionName":"layout","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":761,"columnNumber":34},{"functionName":"layout","scriptId":"1273","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","lineNumber":37,"columnNumber":39},{"functionName":"showComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":171,"columnNumber":26},{"functionName":"doOpenComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":69,"columnNumber":17},{"functionName":"openComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":42,"columnNumber":24},{"functionName":"doOpenViewlet","scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","lineNumber":178,"columnNumber":28},{"functionName":"openViewlet","scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","lineNumber":139,"columnNumber":32},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":294,"columnNumber":57},{"functionName":"restoreWorkbench","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":299,"columnNumber":18},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":81,"columnNumber":35},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}},"type":"Font","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103523,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.90","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547785.55882,"wallTime":1588425103.437232,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"scanDomNode","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":421,"columnNumber":37},{"functionName":"layoutBody","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":204,"columnNumber":39},{"functionName":"layoutBody","scriptId":"302","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/searchView.js","lineNumber":750,"columnNumber":22},{"functionName":"layout","scriptId":"1275","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","lineNumber":160,"columnNumber":25},{"functionName":"layout","scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","lineNumber":75,"columnNumber":22},{"functionName":"layoutViews","scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","lineNumber":627,"columnNumber":25},{"functionName":"layout","scriptId":"1285","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","lineNumber":288,"columnNumber":17},{"functionName":"layout","scriptId":"1275","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","lineNumber":355,"columnNumber":27},{"functionName":"layout","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":761,"columnNumber":34},{"functionName":"layout","scriptId":"1273","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","lineNumber":37,"columnNumber":39},{"functionName":"showComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":171,"columnNumber":26},{"functionName":"doOpenComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":69,"columnNumber":17},{"functionName":"openComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":42,"columnNumber":24},{"functionName":"doOpenViewlet","scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","lineNumber":178,"columnNumber":28},{"functionName":"openViewlet","scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","lineNumber":139,"columnNumber":32},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":294,"columnNumber":57},{"functionName":"restoreWorkbench","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":299,"columnNumber":18},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":81,"columnNumber":35},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}},"type":"Font","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103557,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103562,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/index.js"},"level":0} {"tag":"dap.send","timestamp":1588425103564,"metadata":{"connectionId":1,"message":{"seq":2189,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js","sourceReference":1409744039}}}},"level":0} {"tag":"dap.send","timestamp":1588425103565,"metadata":{"connectionId":1,"message":{"seq":2190,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/lib/index.js","path":"/Users/roblou/code/vscode/node_modules/node-pty/lib/index.js","sourceReference":1197808094}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103566,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js","absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103570,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js","absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js"},"level":0} {"tag":"dap.send","timestamp":1588425103571,"metadata":{"connectionId":1,"message":{"seq":2191,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js","path":"/Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js","sourceReference":1986178761}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103571,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103571,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts","sourceMapSources":["vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103572,"metadata":{"connectionId":1,"message":{"seq":2192,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103572,"message":"no sourceRoot specified, using script dirname","metadata":{"absSourceRoot":"/Users/roblou/code/vscode/node_modules/node-pty/lib"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103572,"message":"Creating source from source map","metadata":{"inputUrl":"../src/index.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/index.js.map","compiledPath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/index.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/src/index.ts","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/src/index.ts","sourceMapSources":["../src/index.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103572,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js","absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js"},"level":0} {"tag":"dap.send","timestamp":1588425103573,"metadata":{"connectionId":1,"message":{"seq":2193,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js","path":"/Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js","sourceReference":1267609733}}}},"level":0} {"tag":"dap.send","timestamp":1588425103573,"metadata":{"connectionId":1,"message":{"seq":2194,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js","path":"/Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js","sourceReference":684660736}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103573,"message":"no sourceRoot specified, using script dirname","metadata":{"absSourceRoot":"/Users/roblou/code/vscode/node_modules/node-pty/lib"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103573,"message":"Creating source from source map","metadata":{"inputUrl":"../src/unixTerminal.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js.map","compiledPath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/unixTerminal.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/src/unixTerminal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/src/unixTerminal.ts","sourceMapSources":["../src/unixTerminal.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103574,"metadata":{"connectionId":1,"message":{"seq":2195,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/src/index.ts","path":"/Users/roblou/code/vscode/node_modules/node-pty/src/index.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103574,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js","absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js"},"level":0} {"tag":"dap.send","timestamp":1588425103574,"metadata":{"connectionId":1,"message":{"seq":2196,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/src/unixTerminal.ts","path":"/Users/roblou/code/vscode/node_modules/node-pty/src/unixTerminal.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103575,"message":"no sourceRoot specified, using script dirname","metadata":{"absSourceRoot":"/Users/roblou/code/vscode/node_modules/node-pty/lib"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103575,"message":"Creating source from source map","metadata":{"inputUrl":"../src/terminal.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js.map","compiledPath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/terminal.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/src/terminal.ts","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/src/terminal.ts","sourceMapSources":["../src/terminal.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103575,"metadata":{"connectionId":1,"message":{"seq":2197,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/src/terminal.ts","path":"/Users/roblou/code/vscode/node_modules/node-pty/src/terminal.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103576,"metadata":{"connectionId":1,"message":{"seq":2198,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js","path":"/Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js","sourceReference":36862804}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103577,"message":"no sourceRoot specified, using script dirname","metadata":{"absSourceRoot":"/Users/roblou/code/vscode/node_modules/node-pty/lib"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103577,"message":"Creating source from source map","metadata":{"inputUrl":"../src/eventEmitter2.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js.map","compiledPath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/eventEmitter2.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/src/eventEmitter2.ts","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/src/eventEmitter2.ts","sourceMapSources":["../src/eventEmitter2.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103578,"metadata":{"connectionId":1,"message":{"seq":2199,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/src/eventEmitter2.ts","path":"/Users/roblou/code/vscode/node_modules/node-pty/src/eventEmitter2.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103579,"message":"no sourceRoot specified, using script dirname","metadata":{"absSourceRoot":"/Users/roblou/code/vscode/node_modules/node-pty/lib"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103579,"message":"Creating source from source map","metadata":{"inputUrl":"../src/utils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js.map","compiledPath":"/Users/roblou/code/vscode/node_modules/node-pty/lib/utils.js"},"absolutePath":"/Users/roblou/code/vscode/node_modules/node-pty/src/utils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/node_modules/node-pty/src/utils.ts","sourceMapSources":["../src/utils.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103580,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425103587,"metadata":{"connectionId":1,"message":{"seq":2200,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/node-pty/src/utils.ts","path":"/Users/roblou/code/vscode/node_modules/node-pty/src/utils.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103590,"metadata":{"connectionId":1,"message":{"seq":2201,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js","sourceReference":1522777665}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425103590,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.154","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547785.656952,"type":"Font","response":{"url":"file:///Users/roblou/code/vscode/extensions/theme-seti/icons/seti.woff","status":200,"statusText":"OK","headers":{"Content-Type":"application/font-woff"},"mimeType":"application/font-woff","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103592,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.154","timestamp":547785.657018,"dataLength":34632,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103592,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.154","timestamp":547785.657215,"encodedDataLength":34632,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103594,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103595,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/parsers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/parsers.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425103596,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.90","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547785.703611,"type":"Font","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/codicons/codicon/codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6","status":200,"statusText":"OK","headers":{"Content-Type":"application/octet-stream"},"mimeType":"application/octet-stream","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103596,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.90","timestamp":547785.70991,"dataLength":58864,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103596,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.90","timestamp":547785.710092,"encodedDataLength":58864,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103599,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js"},"level":0} {"tag":"dap.send","timestamp":1588425103601,"metadata":{"connectionId":1,"message":{"seq":2202,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js","sourceReference":1119260127}}}},"level":0} {"tag":"dap.send","timestamp":1588425103602,"metadata":{"connectionId":1,"message":{"seq":2203,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/parsers.js","path":"/Users/roblou/code/vscode/out/vs/base/common/parsers.js","sourceReference":248315516}}}},"level":0} {"tag":"dap.send","timestamp":1588425103602,"metadata":{"connectionId":1,"message":{"seq":2204,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js","path":"/Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js","sourceReference":1096022943}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103603,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103603,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/taskDefinitionRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/taskDefinitionRegistry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103608,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js"},"level":0} {"tag":"dap.send","timestamp":1588425103610,"metadata":{"connectionId":1,"message":{"seq":2205,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103610,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103611,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103611,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/taskSystem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskSystem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/taskSystem.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103611,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103612,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/parsers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/parsers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/parsers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/parsers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/parsers.ts","sourceMapSources":["vs/base/common/parsers.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103612,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js"},"level":0} {"tag":"dap.send","timestamp":1588425103613,"metadata":{"connectionId":1,"message":{"seq":2206,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js","sourceReference":1782705215}}}},"level":0} {"tag":"dap.send","timestamp":1588425103613,"metadata":{"connectionId":1,"message":{"seq":2207,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js","sourceReference":1262572032}}}},"level":0} {"tag":"dap.send","timestamp":1588425103615,"metadata":{"connectionId":1,"message":{"seq":2208,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103628,"metadata":{"connectionId":1,"message":{"seq":2209,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/parsers.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/parsers.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103628,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103628,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/jsonFormatter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/jsonFormatter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/jsonFormatter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/jsonFormatter.ts","sourceMapSources":["vs/base/common/jsonFormatter.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103628,"metadata":{"connectionId":1,"message":{"seq":2210,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js","sourceReference":171336567}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103629,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js"},"level":0} {"tag":"dap.send","timestamp":1588425103630,"metadata":{"connectionId":1,"message":{"seq":2211,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/jsonFormatter.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/jsonFormatter.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103630,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/component.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/component.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103631,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103631,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/problemCollectors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/problemCollectors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/problemCollectors.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103632,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/iframe.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/iframe.js"},"level":0} {"tag":"dap.send","timestamp":1588425103634,"metadata":{"connectionId":1,"message":{"seq":2212,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103634,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/console/global.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103634,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/string_decoder.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103635,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js"},"level":0} {"tag":"dap.send","timestamp":1588425103636,"metadata":{"connectionId":1,"message":{"seq":2213,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js","sourceReference":2073858298}}}},"level":0} {"tag":"dap.send","timestamp":1588425103636,"metadata":{"connectionId":1,"message":{"seq":2214,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/component.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/component.js","sourceReference":568705238}}}},"level":0} {"tag":"dap.send","timestamp":1588425103637,"metadata":{"connectionId":1,"message":{"seq":2215,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/iframe.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/iframe.js","sourceReference":457180146}}}},"level":0} {"tag":"dap.send","timestamp":1588425103637,"metadata":{"connectionId":1,"message":{"seq":2216,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/console/global.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/console/global.js","sourceReference":730833764}}}},"level":0} {"tag":"dap.send","timestamp":1588425103637,"metadata":{"connectionId":1,"message":{"seq":2217,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/string_decoder.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/string_decoder.js","sourceReference":386526517}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103638,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103638,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/browser/taskQuickPick.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/taskQuickPick.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick.ts","sourceMapSources":["vs/workbench/contrib/tasks/browser/taskQuickPick.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103639,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103639,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/taskTemplates.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/taskTemplates.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/taskTemplates.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103639,"metadata":{"connectionId":1,"message":{"seq":2218,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js","sourceReference":1041117824}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103640,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/idGenerator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/idGenerator.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103640,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/console/constructor.js"},"level":0} {"tag":"dap.send","timestamp":1588425103641,"metadata":{"connectionId":1,"message":{"seq":2219,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103641,"metadata":{"connectionId":1,"message":{"seq":2220,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103642,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103642,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts","sourceMapSources":["vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103642,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103642,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/component.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/component.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/component.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/component.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/component.ts","sourceMapSources":["vs/workbench/common/component.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103642,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/range.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/range.js"},"level":0} {"tag":"dap.send","timestamp":1588425103643,"metadata":{"connectionId":1,"message":{"seq":2221,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103643,"metadata":{"connectionId":1,"message":{"seq":2222,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/component.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/component.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103644,"metadata":{"connectionId":1,"message":{"seq":2223,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/console/constructor.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/console/constructor.js","sourceReference":1031961310}}}},"level":0} {"tag":"dap.send","timestamp":1588425103644,"metadata":{"connectionId":1,"message":{"seq":2224,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/idGenerator.js","path":"/Users/roblou/code/vscode/out/vs/base/common/idGenerator.js","sourceReference":1298442691}}}},"level":0} {"tag":"dap.send","timestamp":1588425103644,"metadata":{"connectionId":1,"message":{"seq":2225,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/range.js","path":"/Users/roblou/code/vscode/out/vs/base/common/range.js","sourceReference":700848433}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103645,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103646,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103646,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/iframe.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/iframe.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/iframe.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/iframe.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/iframe.ts","sourceMapSources":["vs/base/browser/iframe.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103646,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103646,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/menu/menubar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/menu/menubar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menubar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menubar.ts","sourceMapSources":["vs/base/browser/ui/menu/menubar.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103646,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js"},"level":0} {"tag":"dap.send","timestamp":1588425103647,"metadata":{"connectionId":1,"message":{"seq":2226,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/iframe.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/iframe.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103647,"metadata":{"connectionId":1,"message":{"seq":2227,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menubar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/menu/menubar.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103647,"metadata":{"connectionId":1,"message":{"seq":2228,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","sourceReference":1362941736}}}},"level":0} {"tag":"dap.send","timestamp":1588425103647,"metadata":{"connectionId":1,"message":{"seq":2229,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js","sourceReference":734744947}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103647,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103648,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103648,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/idGenerator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/idGenerator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/idGenerator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/idGenerator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/idGenerator.ts","sourceMapSources":["vs/base/common/idGenerator.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103648,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103648,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/range.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/range.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/range.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/range.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/range.ts","sourceMapSources":["vs/base/common/range.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103649,"metadata":{"connectionId":1,"message":{"seq":2230,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/idGenerator.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/idGenerator.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103649,"metadata":{"connectionId":1,"message":{"seq":2231,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/range.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/range.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103649,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103653,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103656,"metadata":{"connectionId":1,"message":{"seq":2232,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","sourceReference":1252983748}}}},"level":0} {"tag":"dap.send","timestamp":1588425103656,"metadata":{"connectionId":1,"message":{"seq":2233,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js","sourceReference":1865853014}}}},"level":0} {"tag":"dap.send","timestamp":1588425103657,"metadata":{"connectionId":1,"message":{"seq":2234,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js","sourceReference":1107871255}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103658,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103660,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103660,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/list.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/list.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/list.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/list.ts","sourceMapSources":["vs/base/browser/ui/list/list.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103660,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103660,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/splice.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/splice.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/splice.ts","sourceMapSources":["vs/base/browser/ui/list/splice.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103661,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103661,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/listView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/listView.ts","sourceMapSources":["vs/base/browser/ui/list/listView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103661,"metadata":{"connectionId":1,"message":{"seq":2235,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/list.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/list.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103661,"metadata":{"connectionId":1,"message":{"seq":2236,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/splice.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/splice.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103661,"metadata":{"connectionId":1,"message":{"seq":2237,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listView.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listView.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103661,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103661,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/objectTreeModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/objectTreeModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTreeModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTreeModel.ts","sourceMapSources":["vs/base/browser/ui/tree/objectTreeModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103662,"metadata":{"connectionId":1,"message":{"seq":2238,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","sourceReference":1828282162}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103662,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103662,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103662,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/compressedObjectTreeModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/compressedObjectTreeModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts","sourceMapSources":["vs/base/browser/ui/tree/compressedObjectTreeModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103662,"metadata":{"connectionId":1,"message":{"seq":2239,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTreeModel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/objectTreeModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103664,"metadata":{"connectionId":1,"message":{"seq":2240,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103664,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js"},"level":0} {"tag":"dap.send","timestamp":1588425103665,"metadata":{"connectionId":1,"message":{"seq":2241,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js","sourceReference":1012078284}}}},"level":0} {"tag":"dap.send","timestamp":1588425103666,"metadata":{"connectionId":1,"message":{"seq":2242,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js","sourceReference":574726339}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103668,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103668,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/abstractTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/abstractTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/abstractTree.ts","sourceMapSources":["vs/base/browser/ui/tree/abstractTree.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103670,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103691,"metadata":{"connectionId":1,"message":{"seq":2243,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/abstractTree.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/abstractTree.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103692,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js"},"level":0} {"tag":"dap.send","timestamp":1588425103695,"metadata":{"connectionId":1,"message":{"seq":2244,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js","sourceReference":1910975228}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103695,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103696,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103696,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/tree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/tree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/tree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/tree.ts","sourceMapSources":["vs/base/browser/ui/tree/tree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103696,"metadata":{"connectionId":1,"message":{"seq":2245,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js","sourceReference":538413309}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103697,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js"},"level":0} {"tag":"dap.send","timestamp":1588425103697,"metadata":{"connectionId":1,"message":{"seq":2246,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/tree.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/tree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103698,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103698,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/treeIcons.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeIcons.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeIcons.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeIcons.ts","sourceMapSources":["vs/base/browser/ui/tree/treeIcons.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103701,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103701,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103702,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103702,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/indexTreeModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/indexTreeModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/indexTreeModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/indexTreeModel.ts","sourceMapSources":["vs/base/browser/ui/tree/indexTreeModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103702,"metadata":{"connectionId":1,"message":{"seq":2247,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeIcons.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeIcons.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103702,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103703,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103704,"metadata":{"connectionId":1,"message":{"seq":2248,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/indexTreeModel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/indexTreeModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103704,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103704,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103704,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/languageConfiguration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageConfiguration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfiguration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfiguration.ts","sourceMapSources":["vs/editor/common/modes/languageConfiguration.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103704,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103704,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/characterPair.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/characterPair.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/characterPair.ts","sourceMapSources":["vs/editor/common/modes/supports/characterPair.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103705,"metadata":{"connectionId":1,"message":{"seq":2249,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfiguration.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageConfiguration.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103705,"metadata":{"connectionId":1,"message":{"seq":2250,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/characterPair.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/characterPair.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103706,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103706,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103706,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/indentRules.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/indentRules.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/indentRules.ts","sourceMapSources":["vs/editor/common/modes/supports/indentRules.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103706,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103706,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/electricCharacter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/electricCharacter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/electricCharacter.ts","sourceMapSources":["vs/editor/common/modes/supports/electricCharacter.ts"]},"level":0} {"tag":"cdp.receive","timestamp":1588425103706,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1582","url":"cluster.js","startLine":0,"startColumn":0,"endLine":25,"endColumn":0,"executionContextId":1,"hash":"0fc2be6b21223c6d09c169e66d75cb961d002885","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1288,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"3"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103707,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1583","url":"internal/cluster/master.js","startLine":0,"startColumn":0,"endLine":375,"endColumn":0,"executionContextId":1,"hash":"2b0d3fe6367a44411911d9244ff76bb77c05c931","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":10642,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"3"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103707,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1584","url":"internal/cluster/round_robin_handle.js","startLine":0,"startColumn":0,"endLine":122,"endColumn":0,"executionContextId":1,"hash":"3e00986e6bf549a24b639f622d1c1c8c5b47fd00","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":3118,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"3"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103707,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1585","url":"internal/cluster/utils.js","startLine":0,"startColumn":0,"endLine":45,"endColumn":0,"executionContextId":1,"hash":"1b9c246c8d2006917f35230ca1b52e196bc4ac59","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":974,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"3"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103707,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1586","url":"internal/cluster/shared_handle.js","startLine":0,"startColumn":0,"endLine":46,"endColumn":0,"executionContextId":1,"hash":"337fb3ff5d0c24260ea96b7d507c4c4e44dd08ca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1120,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"3"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103707,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1587","url":"internal/cluster/worker.js","startLine":0,"startColumn":0,"endLine":52,"endColumn":0,"executionContextId":1,"hash":"095748e730f1e2302a7121a49dca2542648974b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1254,"stackTrace":{"callFrames":[{"functionName":"NativeModule.compile","scriptId":"14","url":"internal/bootstrap/loaders.js","lineNumber":300,"columnNumber":15}],"parentId":{"id":"3"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103707,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103707,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/onEnter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/onEnter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/onEnter.ts","sourceMapSources":["vs/editor/common/modes/supports/onEnter.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103707,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103707,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/diff/diff.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","sourceMapSources":["vs/base/common/diff/diff.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103708,"metadata":{"connectionId":1,"message":{"seq":2251,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/indentRules.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/indentRules.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103708,"metadata":{"connectionId":1,"message":{"seq":2252,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/electricCharacter.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/electricCharacter.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103708,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103708,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/mirrorTextModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","sourceMapSources":["vs/editor/common/model/mirrorTextModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103708,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103708,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js"},"level":0} {"tag":"dap.send","timestamp":1588425103708,"metadata":{"connectionId":1,"message":{"seq":2253,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/onEnter.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/onEnter.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103709,"metadata":{"connectionId":1,"message":{"seq":2254,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103709,"metadata":{"connectionId":1,"message":{"seq":2255,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103709,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103709,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/diff/diffComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","sourceMapSources":["vs/editor/common/diff/diffComputer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103709,"metadata":{"connectionId":1,"message":{"seq":2256,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/indentRules.js","sourceReference":405969062}}}},"level":0} {"tag":"dap.send","timestamp":1588425103709,"metadata":{"connectionId":1,"message":{"seq":2257,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/characterPair.js","sourceReference":365615999}}}},"level":0} {"tag":"dap.send","timestamp":1588425103709,"metadata":{"connectionId":1,"message":{"seq":2258,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/electricCharacter.js","sourceReference":852421142}}}},"level":0} {"tag":"dap.send","timestamp":1588425103709,"metadata":{"connectionId":1,"message":{"seq":2259,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/onEnter.js","sourceReference":1665036500}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103710,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js"},"level":0} {"tag":"dap.send","timestamp":1588425103710,"metadata":{"connectionId":1,"message":{"seq":2260,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103710,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js"},"level":0} {"tag":"dap.send","timestamp":1588425103710,"metadata":{"connectionId":1,"message":{"seq":2261,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","path":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","sourceReference":521240710}}}},"level":0} {"tag":"dap.send","timestamp":1588425103710,"metadata":{"connectionId":1,"message":{"seq":2262,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","sourceReference":1685429013}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103713,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103713,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/linkComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","sourceMapSources":["vs/editor/common/modes/linkComputer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103713,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js"},"level":0} {"tag":"dap.send","timestamp":1588425103714,"metadata":{"connectionId":1,"message":{"seq":2263,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","sourceReference":1657214033}}}},"level":0} {"tag":"dap.send","timestamp":1588425103714,"metadata":{"connectionId":1,"message":{"seq":2264,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","sourceReference":1800790929}}}},"level":0} {"tag":"dap.send","timestamp":1588425103714,"metadata":{"connectionId":1,"message":{"seq":2265,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","sourceReference":341533727}}}},"level":0} {"tag":"dap.send","timestamp":1588425103714,"metadata":{"connectionId":1,"message":{"seq":2266,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js","sourceReference":95678435}}}},"level":0} {"tag":"dap.send","timestamp":1588425103714,"metadata":{"connectionId":1,"message":{"seq":2267,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","sourceReference":1107477563}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103714,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js"},"level":0} {"tag":"dap.send","timestamp":1588425103714,"metadata":{"connectionId":1,"message":{"seq":2268,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103715,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103715,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/inplaceReplaceSupport.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","sourceMapSources":["vs/editor/common/modes/supports/inplaceReplaceSupport.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103715,"metadata":{"connectionId":1,"message":{"seq":2269,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js","sourceReference":157660242}}}},"level":0} {"tag":"dap.send","timestamp":1588425103715,"metadata":{"connectionId":1,"message":{"seq":2270,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js","sourceReference":38290354}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103716,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103716,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/fastDomNode.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/fastDomNode.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/fastDomNode.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/fastDomNode.ts","sourceMapSources":["vs/base/browser/fastDomNode.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103716,"metadata":{"connectionId":1,"message":{"seq":2271,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103716,"metadata":{"connectionId":0,"message":{"seq":21,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081143.715440:INFO:CONSOLE(225)] \"%c[Extension Host] %cdebugger listening on port 5870 color: blue color:\", source: file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js (225)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425103716,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"info","args":[{"type":"string","value":"%c[Extension Host] %cdebugger listening on port 5870"},{"type":"string","value":"color: blue"},{"type":"string","value":"color:"}],"executionContextId":1,"timestamp":1588425103714.6658,"stackTrace":{"callFrames":[{"functionName":"_tryFindDebugPort","scriptId":"456","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js","lineNumber":224,"columnNumber":36},{"functionName":"processTicksAndRejections","scriptId":"29","url":"internal/process/task_queues.js","lineNumber":84,"columnNumber":4}],"parentId":{"id":"4"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103716,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js"},"level":0} {"tag":"dap.send","timestamp":1588425103717,"metadata":{"connectionId":1,"message":{"seq":2272,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/fastDomNode.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/fastDomNode.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103717,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103717,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/textChange.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/textChange.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/textChange.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/textChange.ts","sourceMapSources":["vs/editor/common/model/textChange.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103717,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103717,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standalone/standaloneBase.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","sourceMapSources":["vs/editor/common/standalone/standaloneBase.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103718,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103718,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103718,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/core/editorState.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/core/editorState.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/core/editorState.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/core/editorState.ts","sourceMapSources":["vs/editor/browser/core/editorState.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103718,"metadata":{"connectionId":1,"message":{"seq":2273,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/textChange.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/textChange.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103718,"metadata":{"connectionId":1,"message":{"seq":2274,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103718,"metadata":{"connectionId":1,"message":{"seq":2275,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js","sourceReference":991626002}}}},"level":0} {"tag":"dap.send","timestamp":1588425103719,"metadata":{"connectionId":1,"message":{"seq":2276,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/core/editorState.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/core/editorState.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103719,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103719,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/widget/diffReview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/diffReview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffReview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/widget/diffReview.ts","sourceMapSources":["vs/editor/browser/widget/diffReview.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103721,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js"},"level":0} {"tag":"dap.send","timestamp":1588425103722,"metadata":{"connectionId":1,"message":{"seq":2277,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffReview.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/diffReview.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103722,"metadata":{"connectionId":1,"message":{"seq":2278,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js","sourceReference":1439027334}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103725,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103725,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103725,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/stringBuilder.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/stringBuilder.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/stringBuilder.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/stringBuilder.ts","sourceMapSources":["vs/editor/common/core/stringBuilder.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103725,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103726,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425103726,"metadata":{"connectionId":1,"message":{"seq":2279,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js","sourceReference":364128430}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103726,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js"},"level":0} {"tag":"dap.send","timestamp":1588425103726,"metadata":{"connectionId":1,"message":{"seq":2280,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/stringBuilder.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/stringBuilder.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103726,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103726,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/sash/sash.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/sash/sash.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/sash/sash.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/sash/sash.ts","sourceMapSources":["vs/base/browser/ui/sash/sash.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103727,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js"},"level":0} {"tag":"dap.send","timestamp":1588425103727,"metadata":{"connectionId":1,"message":{"seq":2281,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/sash/sash.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/sash/sash.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103727,"metadata":{"connectionId":1,"message":{"seq":2282,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js","sourceReference":852915379}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103728,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103728,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/view/overviewZoneManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/view/overviewZoneManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/view/overviewZoneManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/view/overviewZoneManager.ts","sourceMapSources":["vs/editor/common/view/overviewZoneManager.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103728,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425103728,"metadata":{"connectionId":1,"message":{"seq":2283,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js","sourceReference":681613004}}}},"level":0} {"tag":"dap.send","timestamp":1588425103729,"metadata":{"connectionId":1,"message":{"seq":2284,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/view/overviewZoneManager.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/view/overviewZoneManager.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103729,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103729,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewLayout/viewLineRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer.ts","sourceMapSources":["vs/editor/common/viewLayout/viewLineRenderer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103729,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103730,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103730,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewLayout/lineDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/lineDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewLayout/lineDecorations.ts","sourceMapSources":["vs/editor/common/viewLayout/lineDecorations.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103730,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103730,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/viewModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModel.ts","sourceMapSources":["vs/editor/common/viewModel/viewModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103730,"metadata":{"connectionId":1,"message":{"seq":2285,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103730,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103730,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103730,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/widget/inlineDiffMargin.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/inlineDiffMargin.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/widget/inlineDiffMargin.ts","sourceMapSources":["vs/editor/browser/widget/inlineDiffMargin.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103731,"metadata":{"connectionId":1,"message":{"seq":2286,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/lineDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/lineDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103731,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103731,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/config/elementSizeObserver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/config/elementSizeObserver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/config/elementSizeObserver.ts","sourceMapSources":["vs/editor/browser/config/elementSizeObserver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103731,"metadata":{"connectionId":1,"message":{"seq":2287,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103731,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js"},"level":0} {"tag":"dap.send","timestamp":1588425103731,"metadata":{"connectionId":1,"message":{"seq":2288,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/inlineDiffMargin.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/inlineDiffMargin.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103732,"metadata":{"connectionId":1,"message":{"seq":2289,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLineRenderer.js","sourceReference":328861762}}}},"level":0} {"tag":"dap.send","timestamp":1588425103732,"metadata":{"connectionId":1,"message":{"seq":2290,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/inlineDiffMargin.js","sourceReference":1220282685}}}},"level":0} {"tag":"dap.send","timestamp":1588425103732,"metadata":{"connectionId":1,"message":{"seq":2291,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/lineDecorations.js","sourceReference":1631789147}}}},"level":0} {"tag":"dap.send","timestamp":1588425103734,"metadata":{"connectionId":1,"message":{"seq":2292,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/config/elementSizeObserver.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/config/elementSizeObserver.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103735,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103735,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/viewImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/viewImpl.ts","sourceMapSources":["vs/editor/browser/view/viewImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103735,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js"},"level":0} {"tag":"dap.send","timestamp":1588425103735,"metadata":{"connectionId":1,"message":{"seq":2293,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/config/elementSizeObserver.js","sourceReference":846066931}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103735,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorAction.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/editorAction.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103735,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js"},"level":0} {"tag":"dap.send","timestamp":1588425103736,"metadata":{"connectionId":1,"message":{"seq":2294,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewImpl.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103736,"metadata":{"connectionId":1,"message":{"seq":2295,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewImpl.js","sourceReference":822010917}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103736,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103736,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103736,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/viewOutgoingEvents.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewOutgoingEvents.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/viewOutgoingEvents.ts","sourceMapSources":["vs/editor/browser/view/viewOutgoingEvents.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103737,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103737,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursor.ts","sourceMapSources":["vs/editor/common/controller/cursor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103737,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js"},"level":0} {"tag":"dap.send","timestamp":1588425103737,"metadata":{"connectionId":1,"message":{"seq":2296,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewOutgoingEvents.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewOutgoingEvents.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103737,"metadata":{"connectionId":1,"message":{"seq":2297,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursor.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103737,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103738,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/viewModelImpl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelImpl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelImpl.ts","sourceMapSources":["vs/editor/common/viewModel/viewModelImpl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103738,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js"},"level":0} {"tag":"dap.send","timestamp":1588425103738,"metadata":{"connectionId":1,"message":{"seq":2298,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelImpl.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelImpl.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103738,"metadata":{"connectionId":1,"message":{"seq":2299,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOutgoingEvents.js","sourceReference":1107228329}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103738,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103738,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/domLineBreaksComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/domLineBreaksComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/domLineBreaksComputer.ts","sourceMapSources":["vs/editor/browser/view/domLineBreaksComputer.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103739,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103739,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/editorAction.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/editorAction.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/editorAction.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/editorAction.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/editorAction.ts","sourceMapSources":["vs/editor/common/editorAction.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103739,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103739,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/monospaceLineBreaksComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/monospaceLineBreaksComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/monospaceLineBreaksComputer.ts","sourceMapSources":["vs/editor/common/viewModel/monospaceLineBreaksComputer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103739,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103740,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103740,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/commands/replaceCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/commands/replaceCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/commands/replaceCommand.ts","sourceMapSources":["vs/editor/common/commands/replaceCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103740,"metadata":{"connectionId":1,"message":{"seq":2300,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/domLineBreaksComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/domLineBreaksComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103740,"metadata":{"connectionId":1,"message":{"seq":2301,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursor.js","sourceReference":81106154}}}},"level":0} {"tag":"dap.send","timestamp":1588425103741,"metadata":{"connectionId":1,"message":{"seq":2302,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/editorAction.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/editorAction.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103741,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js"},"level":0} {"tag":"dap.send","timestamp":1588425103741,"metadata":{"connectionId":1,"message":{"seq":2303,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/monospaceLineBreaksComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/monospaceLineBreaksComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103741,"metadata":{"connectionId":1,"message":{"seq":2304,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/commands/replaceCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/commands/replaceCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103742,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103742,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorWordOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorWordOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorWordOperations.ts","sourceMapSources":["vs/editor/common/controller/cursorWordOperations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103742,"metadata":{"connectionId":1,"message":{"seq":2305,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelImpl.js","sourceReference":574373081}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103743,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js"},"level":0} {"tag":"dap.send","timestamp":1588425103743,"metadata":{"connectionId":1,"message":{"seq":2306,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorWordOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorWordOperations.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103744,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103748,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103748,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js"},"level":0} {"tag":"dap.send","timestamp":1588425103748,"metadata":{"connectionId":1,"message":{"seq":2307,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/domLineBreaksComputer.js","sourceReference":278313273}}}},"level":0} {"tag":"dap.send","timestamp":1588425103748,"metadata":{"connectionId":1,"message":{"seq":2308,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","sourceReference":2082022801}}}},"level":0} {"tag":"dap.send","timestamp":1588425103748,"metadata":{"connectionId":1,"message":{"seq":2309,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/commands/replaceCommand.js","sourceReference":277200584}}}},"level":0} {"tag":"dap.send","timestamp":1588425103749,"metadata":{"connectionId":1,"message":{"seq":2310,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/editorAction.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/editorAction.js","sourceReference":1747535879}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103750,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103750,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorMoveOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveOperations.ts","sourceMapSources":["vs/editor/common/controller/cursorMoveOperations.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103750,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103750,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/textAreaInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaInput.ts","sourceMapSources":["vs/editor/browser/controller/textAreaInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103750,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103750,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js"},"level":0} {"tag":"dap.send","timestamp":1588425103751,"metadata":{"connectionId":1,"message":{"seq":2311,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorWordOperations.js","sourceReference":1962181922}}}},"level":0} {"tag":"dap.send","timestamp":1588425103751,"metadata":{"connectionId":1,"message":{"seq":2312,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaInput.js","sourceReference":1598258019}}}},"level":0} {"tag":"dap.send","timestamp":1588425103751,"metadata":{"connectionId":1,"message":{"seq":2313,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveOperations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103751,"metadata":{"connectionId":1,"message":{"seq":2314,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaInput.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103752,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103752,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorColumnSelection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorColumnSelection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorColumnSelection.ts","sourceMapSources":["vs/editor/common/controller/cursorColumnSelection.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103752,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425103754,"metadata":{"connectionId":1,"message":{"seq":2315,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveOperations.js","sourceReference":198757281}}}},"level":0} {"tag":"dap.send","timestamp":1588425103754,"metadata":{"connectionId":1,"message":{"seq":2316,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorColumnSelection.js","sourceReference":121689725}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103754,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103754,"metadata":{"connectionId":1,"message":{"seq":2317,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorColumnSelection.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorColumnSelection.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103754,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103754,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorTypeOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorTypeOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorTypeOperations.ts","sourceMapSources":["vs/editor/common/controller/cursorTypeOperations.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103754,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103754,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorMoveCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveCommands.ts","sourceMapSources":["vs/editor/common/controller/cursorMoveCommands.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103755,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103755,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codelens/codelens.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelens.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelens.ts","sourceMapSources":["vs/editor/contrib/codelens/codelens.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103755,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103755,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorDeleteOperations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorDeleteOperations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorDeleteOperations.ts","sourceMapSources":["vs/editor/common/controller/cursorDeleteOperations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103755,"metadata":{"connectionId":1,"message":{"seq":2318,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorTypeOperations.js","sourceReference":588986835}}}},"level":0} {"tag":"dap.send","timestamp":1588425103757,"metadata":{"connectionId":1,"message":{"seq":2319,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorDeleteOperations.js","sourceReference":1742065221}}}},"level":0} {"tag":"dap.send","timestamp":1588425103757,"metadata":{"connectionId":1,"message":{"seq":2320,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveCommands.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorMoveCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103757,"metadata":{"connectionId":1,"message":{"seq":2321,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorTypeOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorTypeOperations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103757,"metadata":{"connectionId":1,"message":{"seq":2322,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelens.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelens.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103758,"metadata":{"connectionId":1,"message":{"seq":2323,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorDeleteOperations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorDeleteOperations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103758,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103758,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorCommon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCommon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCommon.ts","sourceMapSources":["vs/editor/common/controller/cursorCommon.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103758,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js"},"level":0} {"tag":"dap.send","timestamp":1588425103763,"metadata":{"connectionId":1,"message":{"seq":2324,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCommon.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCommon.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103763,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js"},"level":0} {"tag":"dap.send","timestamp":1588425103763,"metadata":{"connectionId":1,"message":{"seq":2325,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorMoveCommands.js","sourceReference":484144301}}}},"level":0} {"tag":"dap.send","timestamp":1588425103763,"metadata":{"connectionId":1,"message":{"seq":2326,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelens.js","sourceReference":1965536225}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103770,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103770,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103770,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103771,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/codeActionCommands.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands.ts","sourceMapSources":["vs/editor/contrib/codeAction/codeActionCommands.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103771,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103771,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/caretOperations/moveCaretCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/moveCaretCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/moveCaretCommand.ts","sourceMapSources":["vs/editor/contrib/caretOperations/moveCaretCommand.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103771,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103775,"metadata":{"connectionId":1,"message":{"seq":2327,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103775,"metadata":{"connectionId":1,"message":{"seq":2328,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/moveCaretCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/caretOperations/moveCaretCommand.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103775,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103775,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103775,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codelens/codelensWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensWidget.ts","sourceMapSources":["vs/editor/contrib/codelens/codelensWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103776,"metadata":{"connectionId":1,"message":{"seq":2329,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/caretOperations/moveCaretCommand.js","sourceReference":1439257827}}}},"level":0} {"tag":"dap.send","timestamp":1588425103776,"metadata":{"connectionId":1,"message":{"seq":2330,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionCommands.js","sourceReference":665481952}}}},"level":0} {"tag":"dap.send","timestamp":1588425103778,"metadata":{"connectionId":1,"message":{"seq":2331,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCommon.js","sourceReference":5317249}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103778,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103778,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103778,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codelens/codeLensCache.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codeLensCache.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codeLensCache.ts","sourceMapSources":["vs/editor/contrib/codelens/codeLensCache.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103781,"metadata":{"connectionId":1,"message":{"seq":2332,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codelensWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2333,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codelensWidget.js","sourceReference":2032194468}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2334,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codelens/codeLensCache.js","sourceReference":56055904}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2335,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js","sourceReference":2069285958}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2336,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js","sourceReference":924378701}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2337,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js","sourceReference":1465242456}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2338,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js","sourceReference":1185830684}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2339,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js","sourceReference":230347601}}}},"level":0} {"tag":"dap.send","timestamp":1588425103797,"metadata":{"connectionId":1,"message":{"seq":2340,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js","sourceReference":107259216}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103797,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js"},"level":0} {"tag":"dap.send","timestamp":1588425103798,"metadata":{"connectionId":1,"message":{"seq":2341,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codeLensCache.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codelens/codeLensCache.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103798,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103798,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/colorPicker/color.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/color.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/color.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/color.ts","sourceMapSources":["vs/editor/contrib/colorPicker/color.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103798,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103798,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1588","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/index.js","startLine":0,"startColumn":0,"endLine":24,"endColumn":66,"executionContextId":1,"hash":"03421f5e2b3fd89e0cc8a006600984e52253eff8","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":955,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1589","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/internal.js","startLine":0,"startColumn":0,"endLine":189,"endColumn":66,"executionContextId":1,"hash":"2a08663a9ddc928b7f7dde3657a3eacc7dd45134","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6335,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1590","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf32.js","startLine":0,"startColumn":0,"endLine":282,"endColumn":66,"executionContextId":1,"hash":"06e279e381c2eb4b5abcc1419e1e817921bb3a32","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":9049,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1591","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf16.js","startLine":0,"startColumn":0,"endLine":178,"endColumn":66,"executionContextId":1,"hash":"110baffc8ba0278e49f1364e58ec69c41eddbe4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":5233,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1592","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf7.js","startLine":0,"startColumn":0,"endLine":291,"endColumn":66,"executionContextId":1,"hash":"1e73ea04798142dd62d1c91ec69db68a676c1689","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":9437,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1593","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-codec.js","startLine":0,"startColumn":0,"endLine":73,"endColumn":66,"executionContextId":1,"hash":"19ffd80e190557605aef0e0e3cc6da2235f60444","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":2413,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1594","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data.js","startLine":0,"startColumn":0,"endLine":175,"endColumn":66,"executionContextId":1,"hash":"08e51f3c29740d783f221c7f224e38753fcca4f7","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":4406,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1595","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data-generated.js","startLine":0,"startColumn":0,"endLine":451,"endColumn":66,"executionContextId":1,"hash":"1a889517170ecb7d355eabc6ca4ad3fd7f1c7698","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":19087,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1596","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-codec.js","startLine":0,"startColumn":0,"endLine":556,"endColumn":66,"executionContextId":1,"hash":"1081b75699aa13a4339ff35c62a172f32d7d7660","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":21637,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425103799,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1597","url":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-data.js","startLine":0,"startColumn":0,"endLine":177,"endColumn":66,"executionContextId":1,"hash":"1ac9b46e4c47a0624c0bc0a27ec4041876481a5e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":8510,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}],"parentId":{"id":"5"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103799,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103799,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/comment/lineCommentCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/lineCommentCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/lineCommentCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/comment/lineCommentCommand.ts","sourceMapSources":["vs/editor/contrib/comment/lineCommentCommand.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103800,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103800,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/comment/blockCommentCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/comment/blockCommentCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/blockCommentCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/comment/blockCommentCommand.ts","sourceMapSources":["vs/editor/contrib/comment/blockCommentCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103800,"metadata":{"connectionId":1,"message":{"seq":2342,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/color.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/color.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103800,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103800,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/findOptionsWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findOptionsWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findOptionsWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/findOptionsWidget.ts","sourceMapSources":["vs/editor/contrib/find/findOptionsWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103800,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103800,"metadata":{"connectionId":1,"message":{"seq":2343,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/lineCommentCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/lineCommentCommand.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103800,"metadata":{"connectionId":1,"message":{"seq":2344,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/blockCommentCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/comment/blockCommentCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103801,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103801,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/findState.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findState.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findState.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/findState.ts","sourceMapSources":["vs/editor/contrib/find/findState.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103801,"metadata":{"connectionId":1,"message":{"seq":2345,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findOptionsWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findOptionsWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103801,"metadata":{"connectionId":1,"message":{"seq":2346,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js","sourceReference":2100717056}}}},"level":0} {"tag":"dap.send","timestamp":1588425103801,"metadata":{"connectionId":1,"message":{"seq":2347,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js","sourceReference":1119707360}}}},"level":0} {"tag":"dap.send","timestamp":1588425103801,"metadata":{"connectionId":1,"message":{"seq":2348,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js","sourceReference":1682041111}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103802,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103802,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103802,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/findWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/findWidget.ts","sourceMapSources":["vs/editor/contrib/find/findWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103802,"metadata":{"connectionId":1,"message":{"seq":2349,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findState.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findState.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103803,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js"},"level":0} {"tag":"dap.send","timestamp":1588425103803,"metadata":{"connectionId":1,"message":{"seq":2350,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103803,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103803,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/config/editorZoom.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/config/editorZoom.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/config/editorZoom.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/config/editorZoom.ts","sourceMapSources":["vs/editor/common/config/editorZoom.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103803,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103803,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/foldingModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingModel.ts","sourceMapSources":["vs/editor/contrib/folding/foldingModel.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103803,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103803,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/foldingDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingDecorations.ts","sourceMapSources":["vs/editor/contrib/folding/foldingDecorations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103804,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425103804,"metadata":{"connectionId":1,"message":{"seq":2351,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/config/editorZoom.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/config/editorZoom.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103804,"metadata":{"connectionId":1,"message":{"seq":2352,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103804,"metadata":{"connectionId":1,"message":{"seq":2353,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103805,"metadata":{"connectionId":1,"message":{"seq":2354,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js","sourceReference":356482103}}}},"level":0} {"tag":"dap.send","timestamp":1588425103805,"metadata":{"connectionId":1,"message":{"seq":2355,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js","sourceReference":1638327470}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103805,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425103805,"metadata":{"connectionId":1,"message":{"seq":2356,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","sourceReference":564529997}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103806,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103806,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/hiddenRangeModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/hiddenRangeModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/hiddenRangeModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/hiddenRangeModel.ts","sourceMapSources":["vs/editor/contrib/folding/hiddenRangeModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103806,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103806,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103806,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/indentRangeProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/indentRangeProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/indentRangeProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/indentRangeProvider.ts","sourceMapSources":["vs/editor/contrib/folding/indentRangeProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103806,"metadata":{"connectionId":1,"message":{"seq":2357,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/hiddenRangeModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/hiddenRangeModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103806,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103806,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/characterClassifier.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","sourceMapSources":["vs/editor/common/core/characterClassifier.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103807,"metadata":{"connectionId":1,"message":{"seq":2358,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/indentRangeProvider.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/indentRangeProvider.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103807,"metadata":{"connectionId":1,"message":{"seq":2359,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103807,"metadata":{"connectionId":1,"message":{"seq":2360,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js","sourceReference":257600971}}}},"level":0} {"tag":"dap.send","timestamp":1588425103807,"metadata":{"connectionId":1,"message":{"seq":2361,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js","sourceReference":622623351}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103808,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103808,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103808,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/intializingRangeProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/intializingRangeProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider.ts","sourceMapSources":["vs/editor/contrib/folding/intializingRangeProvider.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103808,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103808,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/syntaxRangeProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/syntaxRangeProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider.ts","sourceMapSources":["vs/editor/contrib/folding/syntaxRangeProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103809,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js"},"level":0} {"tag":"dap.send","timestamp":1588425103809,"metadata":{"connectionId":1,"message":{"seq":2362,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103810,"metadata":{"connectionId":1,"message":{"seq":2363,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103810,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103811,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103811,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103811,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/format/format.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/format.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/format/format.ts","sourceMapSources":["vs/editor/contrib/format/format.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103811,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103811,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/documentSymbols/outlineModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel.ts","sourceMapSources":["vs/editor/contrib/documentSymbols/outlineModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103812,"metadata":{"connectionId":1,"message":{"seq":2364,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/format.js","sourceReference":796864546}}}},"level":0} {"tag":"dap.send","timestamp":1588425103814,"metadata":{"connectionId":1,"message":{"seq":2365,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/format.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/format.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103814,"metadata":{"connectionId":1,"message":{"seq":2366,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103815,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103815,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/format/formattingEdit.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/formattingEdit.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/format/formattingEdit.ts","sourceMapSources":["vs/editor/contrib/format/formattingEdit.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103815,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103825,"metadata":{"connectionId":1,"message":{"seq":2367,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/formattingEdit.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/format/formattingEdit.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103825,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103825,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/goToSymbol.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/goToSymbol.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103825,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js"},"level":0} {"tag":"dap.send","timestamp":1588425103838,"metadata":{"connectionId":1,"message":{"seq":2368,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineModel.js","sourceReference":1612357028}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103838,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js"},"level":0} {"tag":"dap.send","timestamp":1588425103838,"metadata":{"connectionId":1,"message":{"seq":2369,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103838,"metadata":{"connectionId":1,"message":{"seq":2370,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/goToSymbol.js","sourceReference":51188756}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103839,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103840,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103840,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/referencesModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/referencesModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103840,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425103849,"metadata":{"connectionId":1,"message":{"seq":2371,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103849,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103849,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoError/gotoErrorWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts","sourceMapSources":["vs/editor/contrib/gotoError/gotoErrorWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103849,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js"},"level":0} {"tag":"dap.send","timestamp":1588425103849,"metadata":{"connectionId":1,"message":{"seq":2372,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/format/formattingEdit.js","sourceReference":1925183365}}}},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2373,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/referencesModel.js","sourceReference":310396810}}}},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2374,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoError/gotoErrorWidget.js","sourceReference":516458322}}}},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2375,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js","sourceReference":1312353512}}}},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2376,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js","sourceReference":1854837060}}}},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2377,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js","sourceReference":1623461852}}}},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2378,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js","sourceReference":225991895}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103850,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425103850,"metadata":{"connectionId":1,"message":{"seq":2379,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103850,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103850,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103851,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103851,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103851,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/message/messageController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/message/messageController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/message/messageController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/message/messageController.ts","sourceMapSources":["vs/editor/contrib/message/messageController.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103851,"metadata":{"connectionId":1,"message":{"seq":2380,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103852,"metadata":{"connectionId":1,"message":{"seq":2381,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js","sourceReference":1100067161}}}},"level":0} {"tag":"dap.send","timestamp":1588425103852,"metadata":{"connectionId":1,"message":{"seq":2382,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js","sourceReference":2117618364}}}},"level":0} {"tag":"dap.send","timestamp":1588425103852,"metadata":{"connectionId":1,"message":{"seq":2383,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/message/messageController.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/message/messageController.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103852,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103852,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/symbolNavigation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/symbolNavigation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/symbolNavigation.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103852,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103852,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/dnd/dragAndDropCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/dnd/dragAndDropCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dragAndDropCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dragAndDropCommand.ts","sourceMapSources":["vs/editor/contrib/dnd/dragAndDropCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103852,"metadata":{"connectionId":1,"message":{"seq":2384,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js","sourceReference":1551853916}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103853,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425103853,"metadata":{"connectionId":1,"message":{"seq":2385,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103853,"metadata":{"connectionId":1,"message":{"seq":2386,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dragAndDropCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/dnd/dragAndDropCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103853,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103853,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/peek/referencesController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/peek/referencesController.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103854,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103854,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103854,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts","sourceMapSources":["vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103854,"metadata":{"connectionId":1,"message":{"seq":2387,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103854,"metadata":{"connectionId":1,"message":{"seq":2388,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103855,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103855,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/widget/embeddedCodeEditorWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/widget/embeddedCodeEditorWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts","sourceMapSources":["vs/editor/browser/widget/embeddedCodeEditorWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103855,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js"},"level":0} {"tag":"dap.send","timestamp":1588425103855,"metadata":{"connectionId":1,"message":{"seq":2389,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js","sourceReference":2013873213}}}},"level":0} {"tag":"dap.send","timestamp":1588425103855,"metadata":{"connectionId":1,"message":{"seq":2390,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103855,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103856,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/commands/shiftCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/shiftCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/commands/shiftCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/commands/shiftCommand.ts","sourceMapSources":["vs/editor/common/commands/shiftCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103856,"metadata":{"connectionId":1,"message":{"seq":2391,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js","sourceReference":1422883387}}}},"level":0} {"tag":"dap.send","timestamp":1588425103856,"metadata":{"connectionId":1,"message":{"seq":2392,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js","sourceReference":1242034778}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103856,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425103856,"metadata":{"connectionId":1,"message":{"seq":2393,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/commands/shiftCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/commands/shiftCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103856,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103856,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/hover/modesContentHover.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesContentHover.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesContentHover.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesContentHover.ts","sourceMapSources":["vs/editor/contrib/hover/modesContentHover.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103857,"metadata":{"connectionId":1,"message":{"seq":2394,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesContentHover.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesContentHover.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103857,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103857,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/indentation/indentUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/indentation/indentUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentUtils.ts","sourceMapSources":["vs/editor/contrib/indentation/indentUtils.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103857,"metadata":{"connectionId":1,"message":{"seq":2395,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js","sourceReference":890461889}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103857,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js"},"level":0} {"tag":"dap.send","timestamp":1588425103857,"metadata":{"connectionId":1,"message":{"seq":2396,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentUtils.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/indentation/indentUtils.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103858,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103858,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103858,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/commands/trimTrailingWhitespaceCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/trimTrailingWhitespaceCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand.ts","sourceMapSources":["vs/editor/common/commands/trimTrailingWhitespaceCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103858,"metadata":{"connectionId":1,"message":{"seq":2397,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103859,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103859,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/hover/modesGlyphHover.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesGlyphHover.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesGlyphHover.ts","sourceMapSources":["vs/editor/contrib/hover/modesGlyphHover.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103859,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425103859,"metadata":{"connectionId":1,"message":{"seq":2398,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesGlyphHover.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/modesGlyphHover.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103859,"metadata":{"connectionId":1,"message":{"seq":2399,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/modesGlyphHover.js","sourceReference":1926362681}}}},"level":0} {"tag":"dap.send","timestamp":1588425103859,"metadata":{"connectionId":1,"message":{"seq":2400,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js","sourceReference":27296189}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103860,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103860,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103860,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/linesOperations/copyLinesCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/copyLinesCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/copyLinesCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/copyLinesCommand.ts","sourceMapSources":["vs/editor/contrib/linesOperations/copyLinesCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103860,"metadata":{"connectionId":1,"message":{"seq":2401,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js","sourceReference":1680552319}}}},"level":0} {"tag":"dap.send","timestamp":1588425103860,"metadata":{"connectionId":1,"message":{"seq":2402,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/copyLinesCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/copyLinesCommand.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103860,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103861,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103861,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/linesOperations/sortLinesCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/sortLinesCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/sortLinesCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/sortLinesCommand.ts","sourceMapSources":["vs/editor/contrib/linesOperations/sortLinesCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103861,"metadata":{"connectionId":1,"message":{"seq":2403,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/sortLinesCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/sortLinesCommand.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103861,"metadata":{"connectionId":1,"message":{"seq":2404,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js","sourceReference":1846359434}}}},"level":0} {"tag":"dap.send","timestamp":1588425103861,"metadata":{"connectionId":1,"message":{"seq":2405,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","sourceReference":1784422468}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103861,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103862,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103862,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/linesOperations/moveLinesCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/linesOperations/moveLinesCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/moveLinesCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/moveLinesCommand.ts","sourceMapSources":["vs/editor/contrib/linesOperations/moveLinesCommand.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103862,"metadata":{"connectionId":1,"message":{"seq":2406,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/moveLinesCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/linesOperations/moveLinesCommand.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103862,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103862,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/links/getLinks.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/links/getLinks.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/links/getLinks.ts","sourceMapSources":["vs/editor/contrib/links/getLinks.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103862,"metadata":{"connectionId":1,"message":{"seq":2407,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js","sourceReference":1961191044}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103863,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js"},"level":0} {"tag":"dap.send","timestamp":1588425103863,"metadata":{"connectionId":1,"message":{"seq":2408,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/links/getLinks.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/links/getLinks.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103863,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103863,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/smartSelect/bracketSelections.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/bracketSelections.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/bracketSelections.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/bracketSelections.ts","sourceMapSources":["vs/editor/contrib/smartSelect/bracketSelections.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103863,"metadata":{"connectionId":1,"message":{"seq":2409,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/bracketSelections.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/bracketSelections.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103864,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103864,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103864,"metadata":{"connectionId":1,"message":{"seq":2410,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js","sourceReference":1104976989}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103865,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103865,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/smartSelect/wordSelections.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/smartSelect/wordSelections.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/wordSelections.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/wordSelections.ts","sourceMapSources":["vs/editor/contrib/smartSelect/wordSelections.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103865,"metadata":{"connectionId":1,"message":{"seq":2411,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/wordSelections.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/smartSelect/wordSelections.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103865,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103865,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/parameterHints/provideSignatureHelp.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts","sourceMapSources":["vs/editor/contrib/parameterHints/provideSignatureHelp.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103866,"metadata":{"connectionId":1,"message":{"seq":2412,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/provideSignatureHelp.js","sourceReference":2097860497}}}},"level":0} {"tag":"dap.send","timestamp":1588425103866,"metadata":{"connectionId":1,"message":{"seq":2413,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103866,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103866,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/parameterHints/parameterHintsWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts","sourceMapSources":["vs/editor/contrib/parameterHints/parameterHintsWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103866,"metadata":{"connectionId":1,"message":{"seq":2414,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103866,"metadata":{"connectionId":1,"message":{"seq":2415,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsWidget.js","sourceReference":739147835}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103867,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103867,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103868,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103868,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/snippet/snippetParser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetParser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetParser.ts","sourceMapSources":["vs/editor/contrib/snippet/snippetParser.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103868,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103869,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103869,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggestModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestModel.ts","sourceMapSources":["vs/editor/contrib/suggest/suggestModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103869,"metadata":{"connectionId":1,"message":{"seq":2416,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetParser.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetParser.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103869,"metadata":{"connectionId":1,"message":{"seq":2417,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103869,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js"},"level":0} {"tag":"dap.send","timestamp":1588425103870,"metadata":{"connectionId":1,"message":{"seq":2418,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetParser.js","sourceReference":423506920}}}},"level":0} {"tag":"dap.send","timestamp":1588425103870,"metadata":{"connectionId":1,"message":{"seq":2419,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestModel.js","sourceReference":555584267}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103871,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103871,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggestAlternatives.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestAlternatives.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestAlternatives.ts","sourceMapSources":["vs/editor/contrib/suggest/suggestAlternatives.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103871,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103871,"metadata":{"connectionId":1,"message":{"seq":2420,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestAlternatives.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestAlternatives.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103871,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103871,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggestCommitCharacters.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestCommitCharacters.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestCommitCharacters.ts","sourceMapSources":["vs/editor/contrib/suggest/suggestCommitCharacters.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103872,"metadata":{"connectionId":1,"message":{"seq":2421,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestAlternatives.js","sourceReference":1378006938}}}},"level":0} {"tag":"dap.send","timestamp":1588425103872,"metadata":{"connectionId":1,"message":{"seq":2422,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestCommitCharacters.js","sourceReference":1714292546}}}},"level":0} {"tag":"dap.send","timestamp":1588425103872,"metadata":{"connectionId":1,"message":{"seq":2423,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestCommitCharacters.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestCommitCharacters.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103873,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103873,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggestWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestWidget.ts","sourceMapSources":["vs/editor/contrib/suggest/suggestWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103873,"metadata":{"connectionId":1,"message":{"seq":2424,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103873,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js"},"level":0} {"tag":"dap.send","timestamp":1588425103874,"metadata":{"connectionId":1,"message":{"seq":2425,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestWidget.js","sourceReference":1032504920}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103874,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js"},"level":0} {"tag":"dap.send","timestamp":1588425103875,"metadata":{"connectionId":1,"message":{"seq":2426,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js","sourceReference":1677378378}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103875,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103875,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/suggestMemory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/suggestMemory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestMemory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestMemory.ts","sourceMapSources":["vs/editor/contrib/suggest/suggestMemory.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103875,"metadata":{"connectionId":1,"message":{"seq":2427,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestMemory.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/suggestMemory.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103875,"metadata":{"connectionId":1,"message":{"seq":2428,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js","sourceReference":92136010}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103875,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103878,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103878,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/wordContextKey.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordContextKey.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordContextKey.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordContextKey.ts","sourceMapSources":["vs/editor/contrib/suggest/wordContextKey.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103878,"metadata":{"connectionId":1,"message":{"seq":2429,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js","sourceReference":279508156}}}},"level":0} {"tag":"dap.send","timestamp":1588425103878,"metadata":{"connectionId":1,"message":{"seq":2430,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordContextKey.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordContextKey.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103879,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103879,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/rename/renameInputField.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/rename/renameInputField.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/renameInputField.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/rename/renameInputField.ts","sourceMapSources":["vs/editor/contrib/rename/renameInputField.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103879,"metadata":{"connectionId":1,"message":{"seq":2431,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/renameInputField.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/rename/renameInputField.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103879,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103880,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103880,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/snippet/snippetSession.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetSession.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetSession.ts","sourceMapSources":["vs/editor/contrib/snippet/snippetSession.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103880,"metadata":{"connectionId":1,"message":{"seq":2432,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetSession.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetSession.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103881,"metadata":{"connectionId":1,"message":{"seq":2433,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetSession.js","sourceReference":913351464}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103881,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103882,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103882,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/wordCharacterClassifier.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/wordCharacterClassifier.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/wordCharacterClassifier.ts","sourceMapSources":["vs/editor/common/controller/wordCharacterClassifier.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103882,"metadata":{"connectionId":1,"message":{"seq":2434,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/wordCharacterClassifier.js","sourceReference":713562789}}}},"level":0} {"tag":"dap.send","timestamp":1588425103882,"metadata":{"connectionId":1,"message":{"seq":2435,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/wordCharacterClassifier.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/wordCharacterClassifier.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103882,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103883,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103883,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/theme/common/tokenClassificationRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.ts","sourceMapSources":["vs/platform/theme/common/tokenClassificationRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103883,"metadata":{"connectionId":1,"message":{"seq":2436,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103883,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js"},"level":0} {"tag":"dap.send","timestamp":1588425103884,"metadata":{"connectionId":1,"message":{"seq":2437,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js","path":"/Users/roblou/code/vscode/out/vs/platform/theme/common/tokenClassificationRegistry.js","sourceReference":2021120727}}}},"level":0} {"tag":"dap.send","timestamp":1588425103884,"metadata":{"connectionId":1,"message":{"seq":2438,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js","sourceReference":825107906}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103884,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103885,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103885,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/shared/editor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/editor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/shared/editor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/shared/editor.ts","sourceMapSources":["vs/workbench/api/common/shared/editor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103885,"metadata":{"connectionId":1,"message":{"seq":2439,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/shared/editor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/shared/editor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103885,"metadata":{"connectionId":1,"message":{"seq":2440,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js","path":"/Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js","sourceReference":577941932}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103885,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103885,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103886,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/jsonErrorMessages.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/jsonErrorMessages.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/jsonErrorMessages.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/jsonErrorMessages.ts","sourceMapSources":["vs/base/common/jsonErrorMessages.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103886,"metadata":{"connectionId":1,"message":{"seq":2441,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/jsonErrorMessages.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/jsonErrorMessages.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103886,"metadata":{"connectionId":1,"message":{"seq":2442,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js","sourceReference":823015113}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103886,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103886,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103886,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugUtils.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugUtils.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103887,"metadata":{"connectionId":1,"message":{"seq":2443,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugUtils.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugUtils.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103887,"metadata":{"connectionId":1,"message":{"seq":2444,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js","sourceReference":1124413734}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103887,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103887,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103888,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/abstractDebugAdapter.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/abstractDebugAdapter.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts","sourceMapSources":["vs/workbench/contrib/debug/common/abstractDebugAdapter.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103888,"metadata":{"connectionId":1,"message":{"seq":2445,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103888,"metadata":{"connectionId":1,"message":{"seq":2446,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js","path":"/Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js","sourceReference":790006474}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103888,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103889,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103889,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/log/common/fileLogService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/log/common/fileLogService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/log/common/fileLogService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/log/common/fileLogService.ts","sourceMapSources":["vs/platform/log/common/fileLogService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103889,"metadata":{"connectionId":1,"message":{"seq":2447,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/fileLogService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/fileLogService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103889,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/sequence.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/sequence.js"},"level":0} {"tag":"dap.send","timestamp":1588425103889,"metadata":{"connectionId":1,"message":{"seq":2448,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js","sourceReference":684507708}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103890,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103890,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/textEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/textEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103890,"metadata":{"connectionId":1,"message":{"seq":2449,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103890,"metadata":{"connectionId":1,"message":{"seq":2450,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/sequence.js","path":"/Users/roblou/code/vscode/out/vs/base/common/sequence.js","sourceReference":1784172343}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103891,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103891,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103891,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/sequence.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/sequence.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/sequence.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/sequence.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/sequence.ts","sourceMapSources":["vs/base/common/sequence.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103891,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js"},"level":0} {"tag":"dap.send","timestamp":1588425103892,"metadata":{"connectionId":1,"message":{"seq":2451,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/sequence.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/sequence.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103892,"metadata":{"connectionId":1,"message":{"seq":2452,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js","sourceReference":1257199130}}}},"level":0} {"tag":"dap.send","timestamp":1588425103892,"metadata":{"connectionId":1,"message":{"seq":2453,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js","sourceReference":219204681}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103892,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103892,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/shared/semanticTokensDto.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/shared/semanticTokensDto.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto.ts","sourceMapSources":["vs/workbench/api/common/shared/semanticTokensDto.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103893,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js"},"level":0} {"tag":"dap.send","timestamp":1588425103893,"metadata":{"connectionId":1,"message":{"seq":2454,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103893,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103893,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/terminalDataBuffering.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/terminalDataBuffering.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/terminalDataBuffering.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103893,"metadata":{"connectionId":1,"message":{"seq":2455,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103893,"metadata":{"connectionId":1,"message":{"seq":2456,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js","sourceReference":1364800479}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103894,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103894,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103894,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/common/openWith.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/common/openWith.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/openWith.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/openWith.ts","sourceMapSources":["vs/workbench/contrib/files/common/openWith.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103894,"metadata":{"connectionId":1,"message":{"seq":2457,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/openWith.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/common/openWith.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103894,"metadata":{"connectionId":1,"message":{"seq":2458,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js","sourceReference":639573403}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103894,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/common/customTextEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customTextEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.ts","sourceMapSources":["vs/workbench/contrib/customEditor/common/customTextEditorModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103895,"metadata":{"connectionId":1,"message":{"seq":2459,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentsView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsView.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentsView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103896,"metadata":{"connectionId":1,"message":{"seq":2460,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsView.js","sourceReference":450330840}}}},"level":0} {"tag":"dap.send","timestamp":1588425103896,"metadata":{"connectionId":1,"message":{"seq":2461,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsView.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103896,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js"},"level":0} {"tag":"dap.send","timestamp":1588425103897,"metadata":{"connectionId":1,"message":{"seq":2462,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js","sourceReference":2068153488}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103897,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103898,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103898,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/environmentVariableShared.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableShared.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/environmentVariableShared.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103898,"metadata":{"connectionId":1,"message":{"seq":2463,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103898,"metadata":{"connectionId":1,"message":{"seq":2464,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js","sourceReference":1135457634}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103898,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103898,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103898,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentsTreeViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentsTreeViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentsTreeViewer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103899,"metadata":{"connectionId":1,"message":{"seq":2465,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103899,"metadata":{"connectionId":1,"message":{"seq":2466,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js","sourceReference":1865910323}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103899,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103900,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103900,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/extHostTunnelService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTunnelService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTunnelService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTunnelService.ts","sourceMapSources":["vs/workbench/api/common/extHostTunnelService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103900,"metadata":{"connectionId":1,"message":{"seq":2467,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTunnelService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTunnelService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103900,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103900,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103900,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/common/model/notebookTextModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/common/model/notebookTextModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103901,"metadata":{"connectionId":1,"message":{"seq":2468,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookTextModel.js","sourceReference":2031522969}}}},"level":0} {"tag":"dap.send","timestamp":1588425103901,"metadata":{"connectionId":1,"message":{"seq":2469,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103901,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/composite.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/composite.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103901,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103901,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/extHostTypeConverters.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypeConverters.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypeConverters.ts","sourceMapSources":["vs/workbench/api/common/extHostTypeConverters.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103902,"metadata":{"connectionId":1,"message":{"seq":2470,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypeConverters.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypeConverters.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103902,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103902,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/composite.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/composite.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/composite.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/composite.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/composite.ts","sourceMapSources":["vs/workbench/browser/composite.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103902,"metadata":{"connectionId":1,"message":{"seq":2471,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/composite.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/composite.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103902,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js"},"level":0} {"tag":"dap.send","timestamp":1588425103903,"metadata":{"connectionId":1,"message":{"seq":2472,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypeConverters.js","sourceReference":1255272842}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103903,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103903,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/tree/treeDefaults.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeDefaults.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeDefaults.ts","sourceMapSources":["vs/base/browser/ui/tree/treeDefaults.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103903,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js"},"level":0} {"tag":"dap.send","timestamp":1588425103904,"metadata":{"connectionId":1,"message":{"seq":2473,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/composite.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/composite.js","sourceReference":1973656058}}}},"level":0} {"tag":"dap.send","timestamp":1588425103904,"metadata":{"connectionId":1,"message":{"seq":2474,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/tree/treeDefaults.js","sourceReference":1807330267}}}},"level":0} {"tag":"dap.send","timestamp":1588425103904,"metadata":{"connectionId":1,"message":{"seq":2475,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeDefaults.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/tree/treeDefaults.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103904,"metadata":{"connectionId":1,"message":{"seq":2476,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","sourceReference":1465287723}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103904,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103904,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103904,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/panecomposite.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/panecomposite.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/panecomposite.ts","sourceMapSources":["vs/workbench/browser/panecomposite.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103905,"metadata":{"connectionId":1,"message":{"seq":2477,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/panecomposite.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/panecomposite.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103905,"metadata":{"connectionId":1,"message":{"seq":2478,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js","sourceReference":535151890}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103905,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103905,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/toolbar/toolbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/toolbar/toolbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts","sourceMapSources":["vs/base/browser/ui/toolbar/toolbar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103906,"metadata":{"connectionId":1,"message":{"seq":2479,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103907,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103908,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103908,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/splitview/paneview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/paneview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/paneview.ts","sourceMapSources":["vs/base/browser/ui/splitview/paneview.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103908,"metadata":{"connectionId":1,"message":{"seq":2480,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/paneview.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/paneview.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103909,"metadata":{"connectionId":1,"message":{"seq":2481,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","sourceReference":1043975781}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103909,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103910,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103910,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/opener/browser/link.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/opener/browser/link.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/opener/browser/link.ts","sourceMapSources":["vs/platform/opener/browser/link.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103910,"metadata":{"connectionId":1,"message":{"seq":2482,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/opener/browser/link.ts","path":"/Users/roblou/code/vscode/src/vs/platform/opener/browser/link.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103910,"metadata":{"connectionId":1,"message":{"seq":2483,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js","path":"/Users/roblou/code/vscode/out/vs/platform/opener/browser/link.js","sourceReference":932230218}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103910,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103911,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103911,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/button/button.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/button/button.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/button/button.ts","sourceMapSources":["vs/base/browser/ui/button/button.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103911,"metadata":{"connectionId":1,"message":{"seq":2484,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/button/button.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/button/button.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103911,"metadata":{"connectionId":1,"message":{"seq":2485,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/button/button.js","sourceReference":2057145053}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103913,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js"},"level":0} {"tag":"dap.send","timestamp":1588425103916,"metadata":{"connectionId":1,"message":{"seq":2486,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js","sourceReference":1744429834}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103916,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103916,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103917,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/progress/browser/progressIndicator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/progress/browser/progressIndicator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressIndicator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressIndicator.ts","sourceMapSources":["vs/workbench/services/progress/browser/progressIndicator.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103917,"metadata":{"connectionId":1,"message":{"seq":2487,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressIndicator.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/progress/browser/progressIndicator.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103917,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103917,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/progressbar/progressbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/progressbar/progressbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/progressbar/progressbar.ts","sourceMapSources":["vs/base/browser/ui/progressbar/progressbar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103917,"metadata":{"connectionId":1,"message":{"seq":2488,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/progressbar/progressbar.js","sourceReference":1556067033}}}},"level":0} {"tag":"dap.send","timestamp":1588425103917,"metadata":{"connectionId":1,"message":{"seq":2489,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/progressbar/progressbar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/progressbar/progressbar.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103917,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103918,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103918,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/scrollableElement.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/scrollableElement.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103918,"metadata":{"connectionId":1,"message":{"seq":2490,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103919,"metadata":{"connectionId":1,"message":{"seq":2491,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","sourceReference":1194338228}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103920,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103921,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103921,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/grid/gridview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/grid/gridview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/grid/gridview.ts","sourceMapSources":["vs/base/browser/ui/grid/gridview.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103921,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js"},"level":0} {"tag":"dap.send","timestamp":1588425103922,"metadata":{"connectionId":1,"message":{"seq":2492,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/grid/gridview.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/grid/gridview.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103922,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103922,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/tabsTitleControl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts","sourceMapSources":["vs/workbench/browser/parts/editor/tabsTitleControl.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103923,"metadata":{"connectionId":1,"message":{"seq":2493,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","sourceReference":734304047}}}},"level":0} {"tag":"dap.send","timestamp":1588425103923,"metadata":{"connectionId":1,"message":{"seq":2494,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103923,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103925,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103925,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorControl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorControl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorControl.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorControl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103925,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js"},"level":0} {"tag":"dap.send","timestamp":1588425103925,"metadata":{"connectionId":1,"message":{"seq":2495,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorControl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorControl.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103926,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103926,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/noTabsTitleControl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts","sourceMapSources":["vs/workbench/browser/parts/editor/noTabsTitleControl.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103926,"metadata":{"connectionId":1,"message":{"seq":2496,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103926,"metadata":{"connectionId":1,"message":{"seq":2497,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/tabsTitleControl.js","sourceReference":597098330}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103926,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js"},"level":0} {"tag":"dap.send","timestamp":1588425103927,"metadata":{"connectionId":1,"message":{"seq":2498,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","sourceReference":467764855}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103927,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103927,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/splitview/splitview.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/splitview.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/splitview.ts","sourceMapSources":["vs/base/browser/ui/splitview/splitview.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103928,"metadata":{"connectionId":1,"message":{"seq":2499,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/splitview.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/splitview/splitview.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103928,"metadata":{"connectionId":1,"message":{"seq":2500,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/noTabsTitleControl.js","sourceReference":1108958368}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103928,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103929,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103929,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/sideBySideEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/sideBySideEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103929,"metadata":{"connectionId":1,"message":{"seq":2501,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103929,"metadata":{"connectionId":1,"message":{"seq":2502,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/splitview.js","sourceReference":2041403849}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103929,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425103930,"metadata":{"connectionId":1,"message":{"seq":2503,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/sideBySideEditor.js","sourceReference":1891606427}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103930,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103930,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103930,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/textDiffEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/textDiffEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103931,"metadata":{"connectionId":1,"message":{"seq":2504,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103931,"metadata":{"connectionId":1,"message":{"seq":2505,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/textDiffEditor.js","sourceReference":822838631}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103931,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103931,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorStatus.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorStatus.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorStatus.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorStatus.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103931,"metadata":{"connectionId":1,"message":{"seq":2506,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorStatus.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorStatus.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103933,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js"},"level":0} {"tag":"dap.send","timestamp":1588425103933,"metadata":{"connectionId":1,"message":{"seq":2507,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorStatus.js","sourceReference":429016162}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103934,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103934,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorAutoSave.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorAutoSave.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103934,"metadata":{"connectionId":1,"message":{"seq":2508,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103934,"metadata":{"connectionId":1,"message":{"seq":2509,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorAutoSave.js","sourceReference":1784690941}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103934,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425103935,"metadata":{"connectionId":1,"message":{"seq":2510,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js","sourceReference":994616298}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103935,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103935,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/binaryDiffEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryDiffEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/binaryDiffEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103935,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425103936,"metadata":{"connectionId":1,"message":{"seq":2511,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103936,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103936,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorActions.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103937,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js"},"level":0} {"tag":"dap.send","timestamp":1588425103937,"metadata":{"connectionId":1,"message":{"seq":2512,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103937,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103937,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103938,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/widget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/widget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/widget.ts","sourceMapSources":["vs/base/browser/ui/widget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103938,"metadata":{"connectionId":1,"message":{"seq":2513,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/widget.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/widget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103938,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103938,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/editorQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts","sourceMapSources":["vs/workbench/browser/parts/editor/editorQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103938,"metadata":{"connectionId":1,"message":{"seq":2514,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103939,"metadata":{"connectionId":1,"message":{"seq":2515,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorActions.js","sourceReference":231446680}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103939,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js"},"level":0} {"tag":"dap.send","timestamp":1588425103940,"metadata":{"connectionId":1,"message":{"seq":2516,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/widget.js","sourceReference":2044391180}}}},"level":0} {"tag":"dap.send","timestamp":1588425103940,"metadata":{"connectionId":1,"message":{"seq":2517,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorQuickAccess.js","sourceReference":397045846}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103940,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103940,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/services/abstractCodeEditorService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/services/abstractCodeEditorService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/services/abstractCodeEditorService.ts","sourceMapSources":["vs/editor/browser/services/abstractCodeEditorService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103941,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103941,"metadata":{"connectionId":1,"message":{"seq":2518,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/services/abstractCodeEditorService.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/services/abstractCodeEditorService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103941,"metadata":{"connectionId":1,"message":{"seq":2519,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/services/abstractCodeEditorService.js","sourceReference":1664758517}}}},"level":0} {"tag":"dap.send","timestamp":1588425103941,"metadata":{"connectionId":1,"message":{"seq":2520,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js","sourceReference":108148608}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103941,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103942,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103942,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/diffEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/diffEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorModel.ts","sourceMapSources":["vs/workbench/common/editor/diffEditorModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103942,"metadata":{"connectionId":1,"message":{"seq":2521,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/diffEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103942,"metadata":{"connectionId":1,"message":{"seq":2522,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js","sourceReference":877706899}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103942,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103943,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103943,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/common/editor/textDiffEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/common/editor/textDiffEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/textDiffEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/common/editor/textDiffEditorModel.ts","sourceMapSources":["vs/workbench/common/editor/textDiffEditorModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103943,"metadata":{"connectionId":1,"message":{"seq":2523,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/textDiffEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/common/editor/textDiffEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103943,"metadata":{"connectionId":1,"message":{"seq":2524,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js","sourceReference":1162966978}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103943,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103943,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/checkbox/checkbox.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/checkbox/checkbox.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/checkbox/checkbox.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/checkbox/checkbox.ts","sourceMapSources":["vs/base/browser/ui/checkbox/checkbox.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103943,"metadata":{"connectionId":1,"message":{"seq":2525,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/checkbox/checkbox.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/checkbox/checkbox.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103947,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103947,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103949,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js"},"level":0} {"tag":"dap.send","timestamp":1588425103950,"metadata":{"connectionId":1,"message":{"seq":2526,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js","sourceReference":325091357}}}},"level":0} {"tag":"dap.send","timestamp":1588425103950,"metadata":{"connectionId":1,"message":{"seq":2527,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js","sourceReference":117776660}}}},"level":0} {"tag":"dap.send","timestamp":1588425103950,"metadata":{"connectionId":1,"message":{"seq":2528,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js","sourceReference":1133665355}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103950,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103950,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/preferences/common/keybindingsEditorModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/keybindingsEditorModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts","sourceMapSources":["vs/workbench/services/preferences/common/keybindingsEditorModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103951,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js"},"level":0} {"tag":"dap.send","timestamp":1588425103954,"metadata":{"connectionId":1,"message":{"seq":2529,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103971,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103971,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/languagesRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/languagesRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/languagesRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/languagesRegistry.ts","sourceMapSources":["vs/editor/common/services/languagesRegistry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103971,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425103972,"metadata":{"connectionId":1,"message":{"seq":2530,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js","sourceReference":1578803675}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103973,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js"},"level":0} {"tag":"dap.send","timestamp":1588425103976,"metadata":{"connectionId":1,"message":{"seq":2531,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/languagesRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/languagesRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103976,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103976,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/abstractMode.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/abstractMode.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/abstractMode.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/abstractMode.ts","sourceMapSources":["vs/editor/common/modes/abstractMode.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103976,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js"},"level":0} {"tag":"dap.send","timestamp":1588425103977,"metadata":{"connectionId":1,"message":{"seq":2532,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js","path":"/Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js","sourceReference":1647323308}}}},"level":0} {"tag":"dap.send","timestamp":1588425103977,"metadata":{"connectionId":1,"message":{"seq":2533,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js","sourceReference":1470158799}}}},"level":0} {"tag":"dap.send","timestamp":1588425103977,"metadata":{"connectionId":1,"message":{"seq":2534,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js","sourceReference":1055877705}}}},"level":0} {"tag":"dap.send","timestamp":1588425103978,"metadata":{"connectionId":1,"message":{"seq":2535,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/abstractMode.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/abstractMode.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103978,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103980,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103980,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/preferences/common/preferencesValidation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/preferences/common/preferencesValidation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation.ts","sourceMapSources":["vs/workbench/services/preferences/common/preferencesValidation.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103980,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js"},"level":0} {"tag":"dap.send","timestamp":1588425103980,"metadata":{"connectionId":1,"message":{"seq":2536,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js","sourceReference":1755922148}}}},"level":0} {"tag":"dap.send","timestamp":1588425103981,"metadata":{"connectionId":1,"message":{"seq":2537,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103981,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103981,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/theme/common/iconRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/theme/common/iconRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/theme/common/iconRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/theme/common/iconRegistry.ts","sourceMapSources":["vs/platform/theme/common/iconRegistry.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103981,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/navigator.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/navigator.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103983,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/plistParser.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/plistParser.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/plistParser.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/plistParser.ts","sourceMapSources":["vs/workbench/services/themes/common/plistParser.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103983,"metadata":{"connectionId":1,"message":{"seq":2538,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/theme/common/iconRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/theme/common/iconRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103983,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/textMateScopeMatcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/textMateScopeMatcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher.ts","sourceMapSources":["vs/workbench/services/themes/common/textMateScopeMatcher.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103983,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js"},"level":0} {"tag":"dap.send","timestamp":1588425103985,"metadata":{"connectionId":1,"message":{"seq":2539,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","sourceReference":1368845134}}}},"level":0} {"tag":"dap.send","timestamp":1588425103985,"metadata":{"connectionId":1,"message":{"seq":2540,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/navigator.js","path":"/Users/roblou/code/vscode/out/vs/base/common/navigator.js","sourceReference":1609920985}}}},"level":0} {"tag":"dap.send","timestamp":1588425103985,"metadata":{"connectionId":1,"message":{"seq":2541,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/plistParser.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/plistParser.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425103985,"metadata":{"connectionId":1,"message":{"seq":2542,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103985,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103985,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/themes/common/themeCompatibility.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/themes/common/themeCompatibility.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeCompatibility.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeCompatibility.ts","sourceMapSources":["vs/workbench/services/themes/common/themeCompatibility.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103985,"metadata":{"connectionId":1,"message":{"seq":2543,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js","sourceReference":2016045784}}}},"level":0} {"tag":"dap.send","timestamp":1588425103986,"metadata":{"connectionId":1,"message":{"seq":2544,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeCompatibility.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/themes/common/themeCompatibility.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103986,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103986,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/highlightedlabel/highlightedLabel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","sourceMapSources":["vs/base/browser/ui/highlightedlabel/highlightedLabel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103986,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js"},"level":0} {"tag":"dap.send","timestamp":1588425103987,"metadata":{"connectionId":1,"message":{"seq":2545,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103987,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103987,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/navigator.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/navigator.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/navigator.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/navigator.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/navigator.ts","sourceMapSources":["vs/base/common/navigator.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425103989,"metadata":{"connectionId":1,"message":{"seq":2546,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/navigator.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/navigator.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103989,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103989,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/inputbox/inputBox.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/inputbox/inputBox.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/inputbox/inputBox.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/inputbox/inputBox.ts","sourceMapSources":["vs/base/browser/ui/inputbox/inputBox.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103989,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js"},"level":0} {"tag":"dap.send","timestamp":1588425103991,"metadata":{"connectionId":1,"message":{"seq":2547,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/inputbox/inputBox.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/inputbox/inputBox.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103991,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js"},"level":0} {"tag":"dap.send","timestamp":1588425103992,"metadata":{"connectionId":1,"message":{"seq":2548,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js","sourceReference":489832706}}}},"level":0} {"tag":"dap.send","timestamp":1588425103992,"metadata":{"connectionId":1,"message":{"seq":2549,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js","sourceReference":685731015}}}},"level":0} {"tag":"dap.send","timestamp":1588425103992,"metadata":{"connectionId":1,"message":{"seq":2550,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js","sourceReference":673827042}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103993,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103993,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/preferencesRenderers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesRenderers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/preferencesRenderers.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103993,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js"},"level":0} {"tag":"dap.send","timestamp":1588425103996,"metadata":{"connectionId":1,"message":{"seq":2551,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103996,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103997,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103997,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/preferencesWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/preferencesWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/preferencesWidgets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103997,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js"},"level":0} {"tag":"dap.send","timestamp":1588425103997,"metadata":{"connectionId":1,"message":{"seq":2552,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js","sourceReference":1395272257}}}},"level":0} {"tag":"dap.send","timestamp":1588425103997,"metadata":{"connectionId":1,"message":{"seq":2553,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js","sourceReference":1260864043}}}},"level":0} {"tag":"dap.send","timestamp":1588425103998,"metadata":{"connectionId":1,"message":{"seq":2554,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425103998,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103998,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/settingsLayout.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsLayout.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/settingsLayout.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425103998,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js"},"level":0} {"tag":"dap.send","timestamp":1588425104000,"metadata":{"connectionId":1,"message":{"seq":2555,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104000,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104000,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/settingsTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/settingsTree.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104000,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js"},"level":0} {"tag":"dap.send","timestamp":1588425104002,"metadata":{"connectionId":1,"message":{"seq":2556,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js","sourceReference":1937722656}}}},"level":0} {"tag":"dap.send","timestamp":1588425104002,"metadata":{"connectionId":1,"message":{"seq":2557,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js","path":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js","sourceReference":147561254}}}},"level":0} {"tag":"dap.send","timestamp":1588425104002,"metadata":{"connectionId":1,"message":{"seq":2558,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js","sourceReference":265807205}}}},"level":0} {"tag":"dap.send","timestamp":1588425104002,"metadata":{"connectionId":1,"message":{"seq":2559,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104002,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104003,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/tocTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/tocTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/tocTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104003,"metadata":{"connectionId":1,"message":{"seq":2560,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104004,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104004,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/settingsTreeModels.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsTreeModels.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/settingsTreeModels.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104004,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425104005,"metadata":{"connectionId":1,"message":{"seq":2561,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104011,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104011,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/telemetry/common/errorTelemetry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/telemetry/common/errorTelemetry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/errorTelemetry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/telemetry/common/errorTelemetry.ts","sourceMapSources":["vs/platform/telemetry/common/errorTelemetry.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104012,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104012,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/preferences/browser/settingsWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/preferences/browser/settingsWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts","sourceMapSources":["vs/workbench/contrib/preferences/browser/settingsWidgets.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104012,"metadata":{"connectionId":1,"message":{"seq":2562,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/errorTelemetry.ts","path":"/Users/roblou/code/vscode/src/vs/platform/telemetry/common/errorTelemetry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104012,"metadata":{"connectionId":1,"message":{"seq":2563,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js","sourceReference":388285519}}}},"level":0} {"tag":"dap.send","timestamp":1588425104013,"metadata":{"connectionId":1,"message":{"seq":2564,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104013,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104015,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425104015,"metadata":{"connectionId":1,"message":{"seq":2565,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js","sourceReference":1102079808}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104016,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104016,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/quickinput/browser/quickInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInput.ts","sourceMapSources":["vs/base/parts/quickinput/browser/quickInput.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104017,"metadata":{"connectionId":1,"message":{"seq":2566,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInput.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInput.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104017,"metadata":{"connectionId":1,"message":{"seq":2567,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js","sourceReference":561237386}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104017,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104018,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104018,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/browser/quickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/quickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickAccess.ts","sourceMapSources":["vs/platform/quickinput/browser/quickAccess.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104019,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104019,"metadata":{"connectionId":1,"message":{"seq":2568,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/quickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104019,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104019,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/common/notebookProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.ts","sourceMapSources":["vs/workbench/contrib/notebook/common/notebookProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104019,"metadata":{"connectionId":1,"message":{"seq":2569,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js","sourceReference":2006473856}}}},"level":0} {"tag":"dap.send","timestamp":1588425104019,"metadata":{"connectionId":1,"message":{"seq":2570,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js","sourceReference":1686617222}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104020,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js"},"level":0} {"tag":"dap.send","timestamp":1588425104020,"metadata":{"connectionId":1,"message":{"seq":2571,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104020,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104021,"metadata":{"connectionId":1,"message":{"seq":2572,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js","sourceReference":1498214750}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104021,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104021,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104021,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/extensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/extensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/extensionPoint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104022,"metadata":{"connectionId":1,"message":{"seq":2573,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104022,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104022,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/common/notebookOutputRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.ts","sourceMapSources":["vs/workbench/contrib/notebook/common/notebookOutputRenderer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104022,"metadata":{"connectionId":1,"message":{"seq":2574,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js","sourceReference":1132397020}}}},"level":0} {"tag":"dap.send","timestamp":1588425104022,"metadata":{"connectionId":1,"message":{"seq":2575,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","sourceReference":1089341645}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104022,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104023,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104023,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/notebookRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/notebookRegistry.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104023,"metadata":{"connectionId":1,"message":{"seq":2576,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104024,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104024,"metadata":{"connectionId":1,"message":{"seq":2577,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104024,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104024,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/findDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/findDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/findDecorations.ts","sourceMapSources":["vs/editor/contrib/find/findDecorations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104024,"metadata":{"connectionId":1,"message":{"seq":2578,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","sourceReference":1361531351}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104024,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104025,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104025,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/prefixSumComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","sourceMapSources":["vs/editor/common/viewModel/prefixSumComputer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104025,"metadata":{"connectionId":1,"message":{"seq":2579,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/findDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104025,"metadata":{"connectionId":1,"message":{"seq":2580,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js","sourceReference":2050592230}}}},"level":0} {"tag":"dap.send","timestamp":1588425104026,"metadata":{"connectionId":1,"message":{"seq":2581,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104026,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104026,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104026,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104026,"metadata":{"connectionId":1,"message":{"seq":2582,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js","sourceReference":992006241}}}},"level":0} {"tag":"dap.send","timestamp":1588425104027,"metadata":{"connectionId":1,"message":{"seq":2583,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104027,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104027,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104027,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104027,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104027,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104028,"metadata":{"connectionId":1,"message":{"seq":2584,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104028,"metadata":{"connectionId":1,"message":{"seq":2585,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js","sourceReference":847449236}}}},"level":0} {"tag":"dap.send","timestamp":1588425104028,"metadata":{"connectionId":1,"message":{"seq":2586,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js","sourceReference":2042498762}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104035,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425104035,"metadata":{"connectionId":1,"message":{"seq":2587,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104035,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104036,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104036,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/browser/pickerQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess.ts","sourceMapSources":["vs/platform/quickinput/browser/pickerQuickAccess.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104036,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425104036,"metadata":{"connectionId":1,"message":{"seq":2588,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104036,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js"},"level":0} {"tag":"dap.send","timestamp":1588425104037,"metadata":{"connectionId":1,"message":{"seq":2589,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js","sourceReference":446883291}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104037,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104037,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/quickAccess/commandsQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/commandsQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/commandsQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/commandsQuickAccess.ts","sourceMapSources":["vs/editor/contrib/quickAccess/commandsQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104038,"metadata":{"connectionId":1,"message":{"seq":2590,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/commandsQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/commandsQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104038,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104038,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/quickinput/browser/commandsQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/quickinput/browser/commandsQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.ts","sourceMapSources":["vs/platform/quickinput/browser/commandsQuickAccess.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104038,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104038,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/binaryEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.ts","sourceMapSources":["vs/workbench/browser/parts/editor/binaryEditor.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104038,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js"},"level":0} {"tag":"dap.send","timestamp":1588425104039,"metadata":{"connectionId":1,"message":{"seq":2591,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/binaryEditor.js","sourceReference":699047463}}}},"level":0} {"tag":"dap.send","timestamp":1588425104039,"metadata":{"connectionId":1,"message":{"seq":2592,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js","sourceReference":1531006560}}}},"level":0} {"tag":"dap.send","timestamp":1588425104039,"metadata":{"connectionId":1,"message":{"seq":2593,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js","sourceReference":1029197729}}}},"level":0} {"tag":"dap.send","timestamp":1588425104039,"metadata":{"connectionId":1,"message":{"seq":2594,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104039,"metadata":{"connectionId":1,"message":{"seq":2595,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104039,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104039,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.ts","sourceMapSources":["vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104040,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104040,"metadata":{"connectionId":1,"message":{"seq":2596,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104040,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104040,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/browser/replaceService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/replaceService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceService.ts","sourceMapSources":["vs/workbench/contrib/search/browser/replaceService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104040,"metadata":{"connectionId":1,"message":{"seq":2597,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js","sourceReference":1579736283}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104040,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425104041,"metadata":{"connectionId":1,"message":{"seq":2598,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/browser/replaceService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104041,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104041,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104041,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/bulkEdit/browser/conflicts.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/bulkEdit/browser/conflicts.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/conflicts.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/conflicts.ts","sourceMapSources":["vs/workbench/services/bulkEdit/browser/conflicts.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104042,"metadata":{"connectionId":1,"message":{"seq":2599,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/conflicts.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/bulkEdit/browser/conflicts.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104042,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104042,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104042,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/files/browser/views/explorerViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts","sourceMapSources":["vs/workbench/contrib/files/browser/views/explorerViewer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104044,"metadata":{"connectionId":1,"message":{"seq":2600,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104044,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104044,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/replaceAllCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/replaceAllCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/replaceAllCommand.ts","sourceMapSources":["vs/editor/contrib/find/replaceAllCommand.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104045,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js"},"level":0} {"tag":"dap.send","timestamp":1588425104045,"metadata":{"connectionId":1,"message":{"seq":2601,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerViewer.js","sourceReference":1043921878}}}},"level":0} {"tag":"dap.send","timestamp":1588425104045,"metadata":{"connectionId":1,"message":{"seq":2602,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replaceAllCommand.js","sourceReference":1309913685}}}},"level":0} {"tag":"dap.send","timestamp":1588425104045,"metadata":{"connectionId":1,"message":{"seq":2603,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js","sourceReference":1290611796}}}},"level":0} {"tag":"dap.send","timestamp":1588425104045,"metadata":{"connectionId":1,"message":{"seq":2604,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js","sourceReference":1010161044}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104045,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104046,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104046,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts","sourceMapSources":["vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104047,"metadata":{"connectionId":1,"message":{"seq":2605,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/replaceAllCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/replaceAllCommand.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104047,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/comparers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/comparers.js"},"level":0} {"tag":"dap.send","timestamp":1588425104047,"metadata":{"connectionId":1,"message":{"seq":2606,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js","sourceReference":1599833600}}}},"level":0} {"tag":"dap.send","timestamp":1588425104048,"metadata":{"connectionId":1,"message":{"seq":2607,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104048,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425104048,"metadata":{"connectionId":1,"message":{"seq":2608,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js","path":"/Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js","sourceReference":1673999662}}}},"level":0} {"tag":"dap.send","timestamp":1588425104048,"metadata":{"connectionId":1,"message":{"seq":2609,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/comparers.js","path":"/Users/roblou/code/vscode/out/vs/base/common/comparers.js","sourceReference":453595141}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104053,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104053,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/search/common/replace.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/search/common/replace.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/replace.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/search/common/replace.ts","sourceMapSources":["vs/workbench/services/search/common/replace.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104053,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js"},"level":0} {"tag":"dap.send","timestamp":1588425104053,"metadata":{"connectionId":1,"message":{"seq":2610,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js","sourceReference":1112420984}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104054,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js"},"level":0} {"tag":"dap.send","timestamp":1588425104054,"metadata":{"connectionId":1,"message":{"seq":2611,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/replace.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/search/common/replace.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104054,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104054,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/find/replacePattern.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/find/replacePattern.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/replacePattern.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/find/replacePattern.ts","sourceMapSources":["vs/editor/contrib/find/replacePattern.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104055,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104055,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/fuzzyScorer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/fuzzyScorer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/fuzzyScorer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/fuzzyScorer.ts","sourceMapSources":["vs/base/common/fuzzyScorer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104055,"metadata":{"connectionId":1,"message":{"seq":2612,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/replacePattern.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/find/replacePattern.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104055,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104055,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/comparers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/comparers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/comparers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/comparers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/comparers.ts","sourceMapSources":["vs/base/common/comparers.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104055,"metadata":{"connectionId":1,"message":{"seq":2613,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js","sourceReference":899711581}}}},"level":0} {"tag":"dap.send","timestamp":1588425104055,"metadata":{"connectionId":1,"message":{"seq":2614,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js","sourceReference":2008089298}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104055,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js"},"level":0} {"tag":"dap.send","timestamp":1588425104056,"metadata":{"connectionId":1,"message":{"seq":2615,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/fuzzyScorer.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/fuzzyScorer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104056,"metadata":{"connectionId":1,"message":{"seq":2616,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/comparers.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/comparers.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104056,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104056,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts","sourceMapSources":["vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104056,"metadata":{"connectionId":1,"message":{"seq":2617,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104057,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104057,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/search/common/cacheState.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/search/common/cacheState.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/cacheState.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/cacheState.ts","sourceMapSources":["vs/workbench/contrib/search/common/cacheState.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104057,"metadata":{"connectionId":1,"message":{"seq":2618,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js","sourceReference":1951282870}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104057,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104057,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104057,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts","sourceMapSources":["vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104057,"metadata":{"connectionId":1,"message":{"seq":2619,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/cacheState.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/search/common/cacheState.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104058,"metadata":{"connectionId":1,"message":{"seq":2620,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104058,"metadata":{"connectionId":1,"message":{"seq":2621,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js","sourceReference":18412798}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104058,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104058,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104058,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/iconLabel/iconLabel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/iconLabel/iconLabel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/iconLabel/iconLabel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/iconLabel/iconLabel.ts","sourceMapSources":["vs/base/browser/ui/iconLabel/iconLabel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104059,"metadata":{"connectionId":1,"message":{"seq":2622,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/iconLabel/iconLabel.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/iconLabel/iconLabel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104059,"metadata":{"connectionId":1,"message":{"seq":2623,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js","sourceReference":76429178}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104059,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104059,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/scm/browser/util.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/util.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/util.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/util.ts","sourceMapSources":["vs/workbench/contrib/scm/browser/util.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104059,"metadata":{"connectionId":1,"message":{"seq":2624,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/util.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/scm/browser/util.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104059,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/resourceTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/resourceTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104060,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104060,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/countBadge/countBadge.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/countBadge/countBadge.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/countBadge/countBadge.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/countBadge/countBadge.ts","sourceMapSources":["vs/base/browser/ui/countBadge/countBadge.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104060,"metadata":{"connectionId":1,"message":{"seq":2625,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/countBadge/countBadge.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/countBadge/countBadge.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104060,"metadata":{"connectionId":1,"message":{"seq":2626,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/resourceTree.js","path":"/Users/roblou/code/vscode/out/vs/base/common/resourceTree.js","sourceReference":115643660}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104060,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104061,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104061,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/resourceTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/resourceTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/resourceTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/resourceTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/resourceTree.ts","sourceMapSources":["vs/base/common/resourceTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104061,"metadata":{"connectionId":1,"message":{"seq":2627,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/resourceTree.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/resourceTree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104061,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104061,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/zoneWidget/zoneWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget.ts","sourceMapSources":["vs/editor/contrib/zoneWidget/zoneWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104062,"metadata":{"connectionId":1,"message":{"seq":2628,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104062,"metadata":{"connectionId":1,"message":{"seq":2629,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/zoneWidget/zoneWidget.js","sourceReference":1232630702}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104062,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104063,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104063,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/baseDebugView.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/baseDebugView.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104063,"metadata":{"connectionId":1,"message":{"seq":2630,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104063,"metadata":{"connectionId":1,"message":{"seq":2631,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/baseDebugView.js","sourceReference":2129642881}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104063,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104064,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104065,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104065,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugModel.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104065,"metadata":{"connectionId":1,"message":{"seq":2632,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104065,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104066,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104066,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugViewModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugViewModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104066,"metadata":{"connectionId":1,"message":{"seq":2633,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugModel.js","sourceReference":966175892}}}},"level":0} {"tag":"dap.send","timestamp":1588425104066,"metadata":{"connectionId":1,"message":{"seq":2634,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104066,"metadata":{"connectionId":1,"message":{"seq":2635,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugViewModel.js","sourceReference":1965961797}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104067,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104067,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104067,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugConfigurationManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugConfigurationManager.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104068,"metadata":{"connectionId":1,"message":{"seq":2636,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104068,"metadata":{"connectionId":1,"message":{"seq":2637,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugConfigurationManager.js","sourceReference":1034959437}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104068,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js"},"level":0} {"tag":"dap.send","timestamp":1588425104068,"metadata":{"connectionId":1,"message":{"seq":2638,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js","sourceReference":381183825}}}},"level":0} {"tag":"dap.send","timestamp":1588425104068,"metadata":{"connectionId":1,"message":{"seq":2639,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js","sourceReference":175926449}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104069,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104069,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104069,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugTaskRunner.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugTaskRunner.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugTaskRunner.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104070,"metadata":{"connectionId":1,"message":{"seq":2640,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104070,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104070,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104070,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugSource.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSource.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSource.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSource.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugSource.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104070,"metadata":{"connectionId":1,"message":{"seq":2641,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSource.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSource.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104071,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104071,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugSession.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugSession.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugSession.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugSession.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104071,"metadata":{"connectionId":1,"message":{"seq":2642,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugSession.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugSession.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104071,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js"},"level":0} {"tag":"dap.send","timestamp":1588425104072,"metadata":{"connectionId":1,"message":{"seq":2643,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugSession.js","sourceReference":1761374304}}}},"level":0} {"tag":"dap.send","timestamp":1588425104072,"metadata":{"connectionId":1,"message":{"seq":2644,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js","sourceReference":153705401}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104072,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104072,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/dropdown/dropdown.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/dropdown/dropdown.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/dropdown/dropdown.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/dropdown/dropdown.ts","sourceMapSources":["vs/base/browser/ui/dropdown/dropdown.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104072,"metadata":{"connectionId":1,"message":{"seq":2645,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/dropdown/dropdown.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/dropdown/dropdown.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104073,"metadata":{"connectionId":1,"message":{"seq":2646,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js","sourceReference":702371255}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104073,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104073,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104074,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markersFilterOptions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersFilterOptions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markersFilterOptions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104074,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104074,"metadata":{"connectionId":1,"message":{"seq":2647,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js","sourceReference":1809548714}}}},"level":0} {"tag":"dap.send","timestamp":1588425104074,"metadata":{"connectionId":1,"message":{"seq":2648,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104075,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425104076,"metadata":{"connectionId":1,"message":{"seq":2649,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js","sourceReference":2071080324}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104077,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104077,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/rangeDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/rangeDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/rangeDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/rangeDecorations.ts","sourceMapSources":["vs/workbench/browser/parts/editor/rangeDecorations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104077,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js"},"level":0} {"tag":"dap.send","timestamp":1588425104078,"metadata":{"connectionId":1,"message":{"seq":2650,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/rangeDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/rangeDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104078,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104078,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markers/browser/markersTreeViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markers/browser/markersTreeViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts","sourceMapSources":["vs/workbench/contrib/markers/browser/markersTreeViewer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104078,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js"},"level":0} {"tag":"dap.send","timestamp":1588425104078,"metadata":{"connectionId":1,"message":{"seq":2651,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104079,"metadata":{"connectionId":1,"message":{"seq":2652,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js","sourceReference":364660413}}}},"level":0} {"tag":"dap.send","timestamp":1588425104079,"metadata":{"connectionId":1,"message":{"seq":2653,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js","sourceReference":434637940}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104079,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lazy.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/lazy.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104080,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104080,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/findinput/replaceInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/replaceInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/replaceInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/replaceInput.ts","sourceMapSources":["vs/base/browser/ui/findinput/replaceInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104080,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js"},"level":0} {"tag":"dap.send","timestamp":1588425104082,"metadata":{"connectionId":1,"message":{"seq":2654,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/replaceInput.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/replaceInput.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104083,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104083,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/debugANSIHandling.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/debugANSIHandling.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/debugANSIHandling.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104083,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425104084,"metadata":{"connectionId":1,"message":{"seq":2655,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js","sourceReference":1897525623}}}},"level":0} {"tag":"dap.send","timestamp":1588425104084,"metadata":{"connectionId":1,"message":{"seq":2656,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/lazy.js","path":"/Users/roblou/code/vscode/out/vs/base/common/lazy.js","sourceReference":37254064}}}},"level":0} {"tag":"dap.send","timestamp":1588425104084,"metadata":{"connectionId":1,"message":{"seq":2657,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js","sourceReference":1169734677}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104085,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.155","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","urlFragment":"#editorWorkerService","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"High","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547786.086236,"wallTime":1588425103.964628,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"getWorker","scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","lineNumber":23,"columnNumber":19},{"functionName":"WebWorker","scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","lineNumber":60,"columnNumber":36},{"functionName":"create","scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","lineNumber":104,"columnNumber":23},{"functionName":"SimpleWorkerClient","scriptId":"612","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":128,"columnNumber":56},{"functionName":"_getOrCreateWorker","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":309,"columnNumber":50},{"functionName":"_getProxy","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":319,"columnNumber":24},{"functionName":"_withSyncedResources","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":332,"columnNumber":24},{"functionName":"computeLinks","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":353,"columnNumber":24},{"functionName":"","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":48,"columnNumber":86},{"functionName":"processTicksAndRejections","scriptId":"29","url":"internal/process/task_queues.js","lineNumber":84,"columnNumber":4}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"provideLinks","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":48,"columnNumber":64},{"functionName":"","scriptId":"1238","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","lineNumber":103,"columnNumber":44},{"functionName":"getLinks","scriptId":"1238","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","lineNumber":102,"columnNumber":79},{"functionName":"","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":146,"columnNumber":88},{"functionName":"createCancelablePromise","scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","lineNumber":14,"columnNumber":25},{"functionName":"beginCompute","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":146,"columnNumber":44},{"functionName":"onModelChanged","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":125,"columnNumber":21},{"functionName":"","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":108,"columnNumber":79},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"setModel","scriptId":"626","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js","lineNumber":257,"columnNumber":39},{"functionName":"setInput","scriptId":"1093","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js","lineNumber":102,"columnNumber":31},{"functionName":"processTicksAndRejections","scriptId":"29","url":"internal/process/task_queues.js","lineNumber":84,"columnNumber":4}],"parent":{"description":"async function","callFrames":[{"functionName":"setInput","scriptId":"1093","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/editors/textFileEditor.js","lineNumber":86,"columnNumber":28},{"functionName":"doSetInput","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":131,"columnNumber":37},{"functionName":"openEditor","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":49,"columnNumber":49},{"functionName":"","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":667,"columnNumber":68},{"functionName":"doShowEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":679,"columnNumber":22},{"functionName":"restoreEditors","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":310,"columnNumber":27},{"functionName":"EditorGroupView","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":114,"columnNumber":42},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":58,"columnNumber":30},{"functionName":"createFromSerialized","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":123,"columnNumber":44},{"functionName":"doCreateGroupView","scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","lineNumber":372,"columnNumber":66},{"functionName":"fromJSON","scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","lineNumber":693,"columnNumber":45},{"functionName":"_deserializeNode","scriptId":"1281","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","lineNumber":830,"columnNumber":51},{"functionName":"","scriptId":"1281","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","lineNumber":823,"columnNumber":35},{"functionName":"_deserializeNode","scriptId":"1281","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","lineNumber":821,"columnNumber":52},{"functionName":"_deserialize","scriptId":"1281","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","lineNumber":815,"columnNumber":29},{"functionName":"deserialize","scriptId":"1281","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/gridview.js","lineNumber":811,"columnNumber":19},{"functionName":"deserialize","scriptId":"735","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/grid/grid.js","lineNumber":423,"columnNumber":49},{"functionName":"doCreateGridControlWithState","scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","lineNumber":686,"columnNumber":59},{"functionName":"doCreateGridControlWithPreviousState","scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","lineNumber":659,"columnNumber":29},{"functionName":"doCreateGridControl","scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","lineNumber":632,"columnNumber":41},{"functionName":"createContentArea","scriptId":"250","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorPart.js","lineNumber":595,"columnNumber":21},{"functionName":"create","scriptId":"595","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/part.js","lineNumber":42,"columnNumber":36},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":236,"columnNumber":33},{"functionName":"renderWorkbench","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":234,"columnNumber":14},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":74,"columnNumber":25},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}}}},"type":"Other","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425104085,"metadata":{"connectionId":1,"message":{"seq":2658,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104085,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104086,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/findinput/findInput.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInput.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInput.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInput.ts","sourceMapSources":["vs/base/browser/ui/findinput/findInput.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104087,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/paging.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/paging.js"},"level":0} {"tag":"dap.send","timestamp":1588425104087,"metadata":{"connectionId":1,"message":{"seq":2659,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js","sourceReference":349533591}}}},"level":0} {"tag":"dap.send","timestamp":1588425104101,"metadata":{"connectionId":1,"message":{"seq":2660,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInput.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInput.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104101,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104102,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js"},"level":0} {"tag":"dap.send","timestamp":1588425104102,"metadata":{"connectionId":1,"message":{"seq":2661,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/paging.js","path":"/Users/roblou/code/vscode/out/vs/base/common/paging.js","sourceReference":701364124}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104103,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104103,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/lazy.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lazy.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/lazy.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/lazy.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/lazy.ts","sourceMapSources":["vs/base/common/lazy.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104104,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104104,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentMenus.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentMenus.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentMenus.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentMenus.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentMenus.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104108,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js"},"level":0} {"tag":"dap.send","timestamp":1588425104109,"metadata":{"connectionId":1,"message":{"seq":2662,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/lazy.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/lazy.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104109,"metadata":{"connectionId":1,"message":{"seq":2663,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentMenus.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentMenus.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104110,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104110,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentGlyphWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentGlyphWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentGlyphWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104110,"metadata":{"connectionId":1,"message":{"seq":2664,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js","sourceReference":296352799}}}},"level":0} {"tag":"dap.send","timestamp":1588425104110,"metadata":{"connectionId":1,"message":{"seq":2665,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js","sourceReference":543984658}}}},"level":0} {"tag":"dap.send","timestamp":1588425104110,"metadata":{"connectionId":1,"message":{"seq":2666,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js","sourceReference":1961968481}}}},"level":0} {"tag":"dap.send","timestamp":1588425104111,"metadata":{"connectionId":1,"message":{"seq":2667,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104111,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104111,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/paging.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/paging.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/paging.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/paging.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/paging.ts","sourceMapSources":["vs/base/common/paging.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104111,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cache.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/cache.js"},"level":0} {"tag":"dap.send","timestamp":1588425104113,"metadata":{"connectionId":1,"message":{"seq":2668,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/paging.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/paging.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104113,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104113,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentThreadWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentThreadWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentThreadWidget.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104113,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104113,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/simpleCommentEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/simpleCommentEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/simpleCommentEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104113,"metadata":{"connectionId":1,"message":{"seq":2669,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/cache.js","path":"/Users/roblou/code/vscode/out/vs/base/common/cache.js","sourceReference":1258401474}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104114,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104114,"metadata":{"connectionId":1,"message":{"seq":2670,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104114,"metadata":{"connectionId":1,"message":{"seq":2671,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104114,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104115,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104115,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsWidgets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104115,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js"},"level":0} {"tag":"dap.send","timestamp":1588425104116,"metadata":{"connectionId":1,"message":{"seq":2672,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104116,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104116,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/cache.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cache.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/cache.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/cache.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/cache.ts","sourceMapSources":["vs/base/common/cache.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104116,"metadata":{"connectionId":1,"message":{"seq":2673,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js","sourceReference":519143128}}}},"level":0} {"tag":"dap.send","timestamp":1588425104116,"metadata":{"connectionId":1,"message":{"seq":2674,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js","sourceReference":696338342}}}},"level":0} {"tag":"dap.send","timestamp":1588425104116,"metadata":{"connectionId":1,"message":{"seq":2675,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js","sourceReference":300351146}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104116,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104117,"metadata":{"connectionId":1,"message":{"seq":2676,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/cache.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/cache.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104118,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104120,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104120,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsViewer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104121,"metadata":{"connectionId":1,"message":{"seq":2677,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js","sourceReference":674046852}}}},"level":0} {"tag":"dap.send","timestamp":1588425104121,"metadata":{"connectionId":1,"message":{"seq":2678,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js","sourceReference":1391282994}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104127,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104127,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104127,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/markdown/common/markdownDocumentRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.ts","sourceMapSources":["vs/workbench/contrib/markdown/common/markdownDocumentRenderer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104127,"metadata":{"connectionId":1,"message":{"seq":2679,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104127,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104127,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/update/common/update.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/common/update.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/common/update.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/update/common/update.ts","sourceMapSources":["vs/workbench/contrib/update/common/update.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104128,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104128,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104128,"metadata":{"connectionId":1,"message":{"seq":2680,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/markdown/common/markdownDocumentRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104129,"metadata":{"connectionId":1,"message":{"seq":2681,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/common/update.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/common/update.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104129,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104129,"metadata":{"connectionId":1,"message":{"seq":2682,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js","sourceReference":414926825}}}},"level":0} {"tag":"dap.send","timestamp":1588425104129,"metadata":{"connectionId":1,"message":{"seq":2683,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js","sourceReference":1033677254}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104129,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104129,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104130,"metadata":{"connectionId":1,"message":{"seq":2684,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104130,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104130,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104130,"metadata":{"connectionId":1,"message":{"seq":2685,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js","sourceReference":1750463017}}}},"level":0} {"tag":"dap.send","timestamp":1588425104130,"metadata":{"connectionId":1,"message":{"seq":2686,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js","sourceReference":1416198690}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104131,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104131,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104131,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/experimentalRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104131,"metadata":{"connectionId":1,"message":{"seq":2687,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104131,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104131,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104132,"metadata":{"connectionId":1,"message":{"seq":2688,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104132,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104132,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104132,"metadata":{"connectionId":1,"message":{"seq":2689,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104132,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104132,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/keymapRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/keymapRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/keymapRecommendations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104132,"metadata":{"connectionId":1,"message":{"seq":2690,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js","sourceReference":638651052}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104133,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js"},"level":0} {"tag":"dap.send","timestamp":1588425104133,"metadata":{"connectionId":1,"message":{"seq":2691,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104133,"metadata":{"connectionId":1,"message":{"seq":2692,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104134,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104134,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js"},"level":0} {"tag":"dap.send","timestamp":1588425104135,"metadata":{"connectionId":1,"message":{"seq":2693,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js","sourceReference":2134595658}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104135,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104135,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/common/customEditorModelManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/customEditorModelManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.ts","sourceMapSources":["vs/workbench/contrib/customEditor/common/customEditorModelManager.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104135,"metadata":{"connectionId":1,"message":{"seq":2694,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js","sourceReference":819610087}}}},"level":0} {"tag":"dap.send","timestamp":1588425104136,"metadata":{"connectionId":1,"message":{"seq":2695,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104136,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104136,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts","sourceMapSources":["vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104137,"metadata":{"connectionId":1,"message":{"seq":2696,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104137,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104137,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104137,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js"},"level":0} {"tag":"dap.send","timestamp":1588425104137,"metadata":{"connectionId":1,"message":{"seq":2697,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js","sourceReference":1898260193}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104138,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104138,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionsList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionsList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionsList.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104138,"metadata":{"connectionId":1,"message":{"seq":2698,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104138,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425104139,"metadata":{"connectionId":1,"message":{"seq":2699,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104139,"metadata":{"connectionId":1,"message":{"seq":2700,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js","path":"/Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js","sourceReference":2002350303}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104139,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104140,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js"},"level":0} {"tag":"dap.send","timestamp":1588425104140,"metadata":{"connectionId":1,"message":{"seq":2701,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js","sourceReference":863162447}}}},"level":0} {"tag":"dap.send","timestamp":1588425104140,"metadata":{"connectionId":1,"message":{"seq":2702,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js","sourceReference":1927972256}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104141,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104141,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/severityIcon/common/severityIcon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/severityIcon/common/severityIcon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/severityIcon/common/severityIcon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/severityIcon/common/severityIcon.ts","sourceMapSources":["vs/platform/severityIcon/common/severityIcon.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104141,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js"},"level":0} {"tag":"dap.send","timestamp":1588425104141,"metadata":{"connectionId":1,"message":{"seq":2703,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/severityIcon/common/severityIcon.ts","path":"/Users/roblou/code/vscode/src/vs/platform/severityIcon/common/severityIcon.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104142,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104142,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/output/common/outputLinkProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/output/common/outputLinkProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/outputLinkProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/outputLinkProvider.ts","sourceMapSources":["vs/workbench/contrib/output/common/outputLinkProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104142,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js"},"level":0} {"tag":"dap.send","timestamp":1588425104142,"metadata":{"connectionId":1,"message":{"seq":2704,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/outputLinkProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/output/common/outputLinkProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104142,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104142,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalTab.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalTab.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalTab.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalTab.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalTab.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104143,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js"},"level":0} {"tag":"dap.send","timestamp":1588425104144,"metadata":{"connectionId":1,"message":{"seq":2705,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalTab.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalTab.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104144,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104144,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalInstance.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalInstance.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104144,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js"},"level":0} {"tag":"dap.send","timestamp":1588425104144,"metadata":{"connectionId":1,"message":{"seq":2706,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalInstance.js","sourceReference":1663100325}}}},"level":0} {"tag":"dap.send","timestamp":1588425104144,"metadata":{"connectionId":1,"message":{"seq":2707,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js","sourceReference":2127507732}}}},"level":0} {"tag":"dap.send","timestamp":1588425104144,"metadata":{"connectionId":1,"message":{"seq":2708,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js","sourceReference":481118858}}}},"level":0} {"tag":"dap.send","timestamp":1588425104145,"metadata":{"connectionId":1,"message":{"seq":2709,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104145,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js"},"level":0} {"tag":"dap.send","timestamp":1588425104145,"metadata":{"connectionId":1,"message":{"seq":2710,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js","sourceReference":370254215}}}},"level":0} {"tag":"dap.send","timestamp":1588425104145,"metadata":{"connectionId":1,"message":{"seq":2711,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js","sourceReference":2145935479}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104146,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104146,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104149,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104149,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/tasks/common/jsonSchemaCommon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon.ts","sourceMapSources":["vs/workbench/contrib/tasks/common/jsonSchemaCommon.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104149,"metadata":{"connectionId":1,"message":{"seq":2712,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js","sourceReference":228758764}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104150,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104150,"metadata":{"connectionId":1,"message":{"seq":2713,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104150,"metadata":{"connectionId":1,"message":{"seq":2714,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104151,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104151,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104151,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configurationResolver/common/configurationResolverUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils.ts","sourceMapSources":["vs/workbench/services/configurationResolver/common/configurationResolverUtils.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104152,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104152,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/configurationResolver/common/configurationResolverSchema.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema.ts","sourceMapSources":["vs/workbench/services/configurationResolver/common/configurationResolverSchema.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104152,"metadata":{"connectionId":1,"message":{"seq":2715,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js","sourceReference":1325981831}}}},"level":0} {"tag":"dap.send","timestamp":1588425104152,"metadata":{"connectionId":1,"message":{"seq":2716,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104152,"metadata":{"connectionId":1,"message":{"seq":2717,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104152,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104152,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/common/environmentVariableCollection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/common/environmentVariableCollection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableCollection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableCollection.ts","sourceMapSources":["vs/workbench/contrib/terminal/common/environmentVariableCollection.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104153,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js"},"level":0} {"tag":"dap.send","timestamp":1588425104153,"metadata":{"connectionId":1,"message":{"seq":2718,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableCollection.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableCollection.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104154,"metadata":{"connectionId":1,"message":{"seq":2719,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js","sourceReference":1424558414}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104154,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104154,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/formattedTextRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/formattedTextRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/formattedTextRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/formattedTextRenderer.ts","sourceMapSources":["vs/base/browser/formattedTextRenderer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104154,"metadata":{"connectionId":1,"message":{"seq":2720,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js","sourceReference":816652927}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104155,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104156,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104156,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts","sourceMapSources":["vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104156,"metadata":{"connectionId":1,"message":{"seq":2721,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/formattedTextRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/formattedTextRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104156,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425104157,"metadata":{"connectionId":1,"message":{"seq":2722,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104157,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js"},"level":0} {"tag":"dap.send","timestamp":1588425104157,"metadata":{"connectionId":1,"message":{"seq":2723,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js","sourceReference":1092735486}}}},"level":0} {"tag":"dap.send","timestamp":1588425104157,"metadata":{"connectionId":1,"message":{"seq":2724,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js","sourceReference":1576651378}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104158,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104158,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/codeAction.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeAction.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeAction.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeAction.ts","sourceMapSources":["vs/editor/contrib/codeAction/codeAction.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104158,"metadata":{"connectionId":1,"message":{"seq":2725,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeAction.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeAction.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104159,"metadata":{"connectionId":1,"message":{"seq":2726,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js","sourceReference":108105642}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104159,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104159,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104159,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/types.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/types.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/types.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/types.ts","sourceMapSources":["vs/editor/contrib/codeAction/types.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104160,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104160,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/emmet/browser/emmetActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/emmet/browser/emmetActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions.ts","sourceMapSources":["vs/workbench/contrib/emmet/browser/emmetActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104160,"metadata":{"connectionId":1,"message":{"seq":2727,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/types.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/types.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104160,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104160,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/snippet/snippetVariables.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/snippet/snippetVariables.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetVariables.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetVariables.ts","sourceMapSources":["vs/editor/contrib/snippet/snippetVariables.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104160,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js"},"level":0} {"tag":"dap.send","timestamp":1588425104161,"metadata":{"connectionId":1,"message":{"seq":2728,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104161,"metadata":{"connectionId":1,"message":{"seq":2729,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetVariables.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/snippet/snippetVariables.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104161,"metadata":{"connectionId":1,"message":{"seq":2730,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js","sourceReference":2107058487}}}},"level":0} {"tag":"dap.send","timestamp":1588425104161,"metadata":{"connectionId":1,"message":{"seq":2731,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js","sourceReference":705394889}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104161,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104162,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104162,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104162,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/update/browser/releaseNotesEditor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/update/browser/releaseNotesEditor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts","sourceMapSources":["vs/workbench/contrib/update/browser/releaseNotesEditor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104163,"metadata":{"connectionId":1,"message":{"seq":2732,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104163,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104163,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/format/browser/showExtensionQuery.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/format/browser/showExtensionQuery.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/showExtensionQuery.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/showExtensionQuery.ts","sourceMapSources":["vs/workbench/contrib/format/browser/showExtensionQuery.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104163,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js"},"level":0} {"tag":"dap.send","timestamp":1588425104163,"metadata":{"connectionId":1,"message":{"seq":2733,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js","sourceReference":1007953250}}}},"level":0} {"tag":"dap.send","timestamp":1588425104164,"metadata":{"connectionId":1,"message":{"seq":2734,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js","sourceReference":524410487}}}},"level":0} {"tag":"dap.send","timestamp":1588425104164,"metadata":{"connectionId":1,"message":{"seq":2735,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/showExtensionQuery.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/format/browser/showExtensionQuery.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104164,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104164,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts","sourceMapSources":["vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104165,"metadata":{"connectionId":1,"message":{"seq":2736,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104165,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104165,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts","sourceMapSources":["vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104165,"metadata":{"connectionId":1,"message":{"seq":2737,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104165,"metadata":{"connectionId":1,"message":{"seq":2738,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js","sourceReference":1924474392}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104165,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104166,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104166,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/feedback/browser/feedback.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/feedback/browser/feedback.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.ts","sourceMapSources":["vs/workbench/contrib/feedback/browser/feedback.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104166,"metadata":{"connectionId":1,"message":{"seq":2739,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/feedback/browser/feedback.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104166,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js"},"level":0} {"tag":"dap.send","timestamp":1588425104168,"metadata":{"connectionId":1,"message":{"seq":2740,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js","sourceReference":2028316899}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104168,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104168,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts","sourceMapSources":["vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104169,"metadata":{"connectionId":1,"message":{"seq":2741,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104169,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/marked/marked.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/marked/marked.js"},"level":0} {"tag":"dap.send","timestamp":1588425104170,"metadata":{"connectionId":1,"message":{"seq":2742,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js","sourceReference":2146499816}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104170,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104170,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/documentSymbols/outlineTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/documentSymbols/outlineTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree.ts","sourceMapSources":["vs/editor/contrib/documentSymbols/outlineTree.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104180,"metadata":{"connectionId":1,"message":{"seq":2743,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104180,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js"},"level":0} {"tag":"dap.send","timestamp":1588425104181,"metadata":{"connectionId":1,"message":{"seq":2744,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/marked/marked.js","path":"/Users/roblou/code/vscode/out/vs/base/common/marked/marked.js","sourceReference":2070886955}}}},"level":0} {"tag":"dap.send","timestamp":1588425104182,"metadata":{"connectionId":1,"message":{"seq":2745,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js","sourceReference":959151444}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104182,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"31CEB9F1109E100C9FF4745BCF1467E4","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":false,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104182,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"31CEB9F1109E100C9FF4745BCF1467E4","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104182,"metadata":{"connectionId":0,"message":{"method":"Target.attachedToTarget","params":{"sessionId":"BE516397D0458F360AA29DDC69F15F11","targetInfo":{"targetId":"31CEB9F1109E100C9FF4745BCF1467E4","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"},"waitingForDebugger":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104182,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.155","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547786.292516,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104182,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.155","timestamp":547786.29263,"dataLength":1604,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104182,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.155","timestamp":547786.292738,"encodedDataLength":1604,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104183,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104183,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104185,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js"},"level":0} {"tag":"dap.send","timestamp":1588425104186,"metadata":{"connectionId":1,"message":{"seq":2746,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js","sourceReference":1822797822}}}},"level":0} {"tag":"dap.send","timestamp":1588425104186,"metadata":{"connectionId":1,"message":{"seq":2747,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js","sourceReference":729889961}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104187,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104187,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.ts","sourceMapSources":["vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104187,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js"},"level":0} {"tag":"dap.send","timestamp":1588425104188,"metadata":{"connectionId":1,"message":{"seq":2748,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js","sourceReference":1399243470}}}},"level":0} {"tag":"dap.send","timestamp":1588425104188,"metadata":{"connectionId":1,"message":{"seq":2749,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104188,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104189,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.ts","sourceMapSources":["vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104189,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104189,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textMate/common/TMScopeRegistry.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textMate/common/TMScopeRegistry.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry.ts","sourceMapSources":["vs/workbench/services/textMate/common/TMScopeRegistry.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104189,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104189,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/unix/watcherService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherService.ts","sourceMapSources":["vs/platform/files/node/watcher/unix/watcherService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104190,"metadata":{"connectionId":1,"message":{"seq":2750,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104190,"metadata":{"connectionId":1,"message":{"seq":2751,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104190,"metadata":{"connectionId":1,"message":{"seq":2752,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js","sourceReference":1749978566}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104190,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js"},"level":0} {"tag":"dap.send","timestamp":1588425104190,"metadata":{"connectionId":1,"message":{"seq":2753,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherService.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104191,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js"},"level":0} {"tag":"dap.send","timestamp":1588425104191,"metadata":{"connectionId":1,"message":{"seq":2754,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js","sourceReference":279655973}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104192,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104192,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsList.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsList.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104192,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js"},"level":0} {"tag":"dap.send","timestamp":1588425104193,"metadata":{"connectionId":1,"message":{"seq":2755,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsList.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104193,"metadata":{"connectionId":1,"message":{"seq":2756,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js","sourceReference":861610510}}}},"level":0} {"tag":"dap.send","timestamp":1588425104193,"metadata":{"connectionId":1,"message":{"seq":2757,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js","sourceReference":1134204481}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104193,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104194,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104194,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/nsfw/watcherService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherService.ts","sourceMapSources":["vs/platform/files/node/watcher/nsfw/watcherService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104195,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js"},"level":0} {"tag":"dap.send","timestamp":1588425104196,"metadata":{"connectionId":1,"message":{"seq":2758,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104196,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104196,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/win32/watcherService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/watcherService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/watcherService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/watcherService.ts","sourceMapSources":["vs/platform/files/node/watcher/win32/watcherService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104196,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js"},"level":0} {"tag":"dap.send","timestamp":1588425104196,"metadata":{"connectionId":1,"message":{"seq":2759,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js","sourceReference":1219372221}}}},"level":0} {"tag":"dap.send","timestamp":1588425104197,"metadata":{"connectionId":1,"message":{"seq":2760,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js","sourceReference":427195390}}}},"level":0} {"tag":"dap.send","timestamp":1588425104197,"metadata":{"connectionId":1,"message":{"seq":2761,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/watcherService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/watcherService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104197,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104197,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/watcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/watcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/watcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/watcher.ts","sourceMapSources":["vs/platform/files/node/watcher/watcher.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104198,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js"},"level":0} {"tag":"dap.send","timestamp":1588425104199,"metadata":{"connectionId":1,"message":{"seq":2762,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/watcher.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/watcher.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104200,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js"},"level":0} {"tag":"dap.send","timestamp":1588425104201,"metadata":{"connectionId":1,"message":{"seq":2763,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js","sourceReference":1445731980}}}},"level":0} {"tag":"dap.send","timestamp":1588425104201,"metadata":{"connectionId":1,"message":{"seq":2764,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js","path":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js","sourceReference":447136187}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104201,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104201,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/nodejs/watcherService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nodejs/watcherService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nodejs/watcherService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nodejs/watcherService.ts","sourceMapSources":["vs/platform/files/node/watcher/nodejs/watcherService.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104202,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js"},"level":0} {"tag":"dap.send","timestamp":1588425104202,"metadata":{"connectionId":1,"message":{"seq":2765,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js","sourceReference":144559923}}}},"level":0} {"tag":"dap.send","timestamp":1588425104208,"metadata":{"connectionId":1,"message":{"seq":2766,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nodejs/watcherService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nodejs/watcherService.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104208,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104208,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/ipc/node/ipc.electron.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.electron.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.electron.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.electron.ts","sourceMapSources":["vs/base/parts/ipc/node/ipc.electron.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104209,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104209,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsActions.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104210,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js"},"level":0} {"tag":"dap.send","timestamp":1588425104211,"metadata":{"connectionId":1,"message":{"seq":2767,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","sourceReference":1231183746}}}},"level":0} {"tag":"dap.send","timestamp":1588425104211,"metadata":{"connectionId":1,"message":{"seq":2768,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js","sourceReference":483164799}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104212,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104212,"metadata":{"connectionId":1,"message":{"seq":2769,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.electron.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/ipc/node/ipc.electron.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104213,"metadata":{"connectionId":1,"message":{"seq":2770,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104213,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104214,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104214,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/instantiation/common/graph.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/instantiation/common/graph.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/graph.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/instantiation/common/graph.ts","sourceMapSources":["vs/platform/instantiation/common/graph.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104215,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js"},"level":0} {"tag":"dap.send","timestamp":1588425104215,"metadata":{"connectionId":1,"message":{"seq":2771,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","sourceReference":1950233603}}}},"level":0} {"tag":"dap.send","timestamp":1588425104215,"metadata":{"connectionId":1,"message":{"seq":2772,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js","sourceReference":1121352821}}}},"level":0} {"tag":"dap.send","timestamp":1588425104215,"metadata":{"connectionId":1,"message":{"seq":2773,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/graph.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/graph.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104216,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js"},"level":0} {"tag":"dap.send","timestamp":1588425104216,"metadata":{"connectionId":1,"message":{"seq":2774,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js","sourceReference":2038913834}}}},"level":0} {"tag":"dap.send","timestamp":1588425104218,"metadata":{"connectionId":1,"message":{"seq":2775,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js","path":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js","sourceReference":84978259}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104218,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104219,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104219,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/textfile/common/textFileSaveParticipant.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/textfile/common/textFileSaveParticipant.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.ts","sourceMapSources":["vs/workbench/services/textfile/common/textFileSaveParticipant.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104219,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104219,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts","sourceMapSources":["vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104220,"metadata":{"connectionId":1,"message":{"seq":2776,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104220,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104220,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/config/charWidthReader.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/config/charWidthReader.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/config/charWidthReader.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/config/charWidthReader.ts","sourceMapSources":["vs/editor/browser/config/charWidthReader.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104220,"metadata":{"connectionId":1,"message":{"seq":2777,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104221,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104221,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts","sourceMapSources":["vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104221,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/processes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/processes.js"},"level":0} {"tag":"dap.send","timestamp":1588425104221,"metadata":{"connectionId":1,"message":{"seq":2778,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/config/charWidthReader.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/config/charWidthReader.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104221,"metadata":{"connectionId":1,"message":{"seq":2779,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104221,"metadata":{"connectionId":1,"message":{"seq":2780,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js","sourceReference":2004067076}}}},"level":0} {"tag":"dap.send","timestamp":1588425104222,"metadata":{"connectionId":1,"message":{"seq":2781,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/processes.js","path":"/Users/roblou/code/vscode/out/vs/base/common/processes.js","sourceReference":125589097}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104224,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104224,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104225,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104225,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/proxyIdentifier.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/proxyIdentifier.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier.ts","sourceMapSources":["vs/workbench/services/extensions/common/proxyIdentifier.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104226,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104226,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/selectBox/selectBoxNative.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxNative.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxNative.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxNative.ts","sourceMapSources":["vs/base/browser/ui/selectBox/selectBoxNative.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104226,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104226,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/services/extensions/common/lazyPromise.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/lazyPromise.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/lazyPromise.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/lazyPromise.ts","sourceMapSources":["vs/workbench/services/extensions/common/lazyPromise.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104226,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104226,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/selectBox/selectBoxCustom.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/selectBox/selectBoxCustom.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts","sourceMapSources":["vs/base/browser/ui/selectBox/selectBoxCustom.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104227,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js"},"level":0} {"tag":"dap.send","timestamp":1588425104227,"metadata":{"connectionId":1,"message":{"seq":2782,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js","sourceReference":1784199934}}}},"level":0} {"tag":"dap.send","timestamp":1588425104227,"metadata":{"connectionId":1,"message":{"seq":2783,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","sourceReference":989076107}}}},"level":0} {"tag":"dap.send","timestamp":1588425104228,"metadata":{"connectionId":1,"message":{"seq":2784,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104228,"metadata":{"connectionId":1,"message":{"seq":2785,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxNative.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxNative.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104228,"metadata":{"connectionId":1,"message":{"seq":2786,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/lazyPromise.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/lazyPromise.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104228,"metadata":{"connectionId":1,"message":{"seq":2787,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104228,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425104231,"metadata":{"connectionId":1,"message":{"seq":2788,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js","sourceReference":1565522405}}}},"level":0} {"tag":"dap.send","timestamp":1588425104231,"metadata":{"connectionId":1,"message":{"seq":2789,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js","sourceReference":528650697}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104231,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104231,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/processes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/processes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/processes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/processes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/processes.ts","sourceMapSources":["vs/base/common/processes.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104232,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js"},"level":0} {"tag":"dap.send","timestamp":1588425104234,"metadata":{"connectionId":1,"message":{"seq":2790,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/processes.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/processes.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104234,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104234,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/textToHtmlTokenizer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/textToHtmlTokenizer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer.ts","sourceMapSources":["vs/editor/common/modes/textToHtmlTokenizer.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104234,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104234,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104235,"metadata":{"connectionId":1,"message":{"seq":2791,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","sourceReference":1865682897}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104235,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js"},"level":0} {"tag":"dap.send","timestamp":1588425104235,"metadata":{"connectionId":1,"message":{"seq":2792,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104235,"metadata":{"connectionId":1,"message":{"seq":2793,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104235,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104235,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104236,"metadata":{"connectionId":1,"message":{"seq":2794,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104236,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104236,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104237,"metadata":{"connectionId":1,"message":{"seq":2795,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js","sourceReference":1910456216}}}},"level":0} {"tag":"dap.send","timestamp":1588425104237,"metadata":{"connectionId":1,"message":{"seq":2796,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104237,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104237,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104238,"metadata":{"connectionId":1,"message":{"seq":2797,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104238,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104238,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104239,"metadata":{"connectionId":1,"message":{"seq":2798,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104400,"metadata":{"connectionId":0,"message":{"seq":22,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081144.333961:INFO:CONSOLE(134)] \"%c[Extension Host] %cdebugger inspector at chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:5870/497d32f9-1a8f-4560-affa-4d9ab3df3a1f color: blue color:\", source: file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js (134)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104401,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cdebugger inspector at chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:5870/497d32f9-1a8f-4560-affa-4d9ab3df3a1f"},{"type":"string","value":"color: blue"},{"type":"string","value":"color:"}],"executionContextId":1,"timestamp":1588425104333.7852,"stackTrace":{"callFrames":[{"functionName":"","scriptId":"456","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionHost.js","lineNumber":133,"columnNumber":44},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":120,"columnNumber":40}],"parentId":{"id":"9"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425104598,"metadata":{"connectionId":0,"message":{"seq":23,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081144.595516:INFO:CONSOLE(380)] \"Extension 'vscode.notebook-test' uses PROPOSED API which is subject to change and removal without notice.\", source: file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js (380)\n[7810:0502/081144.595717:INFO:CONSOLE(380)] \"Extension 'vscode.notebook-regexper' uses PROPOSED API which is subject to change and removal without notice.\", source: file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js (380)\n[7810:0502/081144.595854:INFO:CONSOLE(380)] \"Extension 'vscode.notebook-renderers' uses PROPOSED API which is subject to change and removal without notice.\", source: file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js (380)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104600,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"warning","args":[{"type":"string","value":"Extension 'vscode.notebook-test' uses PROPOSED API which is subject to change and removal without notice."}],"executionContextId":1,"timestamp":1588425104589.7688,"stackTrace":{"callFrames":[{"functionName":"updateEnableProposedApi","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":379,"columnNumber":32},{"functionName":"_checkEnableProposedApi","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":199,"columnNumber":48},{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":332,"columnNumber":21}],"parent":{"description":"async function","callFrames":[{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":330,"columnNumber":69},{"functionName":"_initialize","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":62,"columnNumber":27},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":89,"columnNumber":29}],"parent":{"description":"requestIdleCallback","callFrames":[{"functionName":"exports.runWhenIdle","scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","lineNumber":575,"columnNumber":31},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":88,"columnNumber":28}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"ExtensionService","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":86,"columnNumber":59},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"_createServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":176,"columnNumber":28},{"functionName":"_createServiceInstanceWithOwner","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":164,"columnNumber":28},{"functionName":"_createAndCacheServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":155,"columnNumber":42},{"functionName":"_getOrCreateServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":112,"columnNumber":28},{"functionName":"get","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":35,"columnNumber":44},{"functionName":"initLayout","scriptId":"1043","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","lineNumber":135,"columnNumber":41},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":66,"columnNumber":25},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}}}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104605,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"warning","args":[{"type":"string","value":"Extension 'vscode.notebook-regexper' uses PROPOSED API which is subject to change and removal without notice."}],"executionContextId":1,"timestamp":1588425104590.469,"stackTrace":{"callFrames":[{"functionName":"updateEnableProposedApi","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":379,"columnNumber":32},{"functionName":"_checkEnableProposedApi","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":199,"columnNumber":48},{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":332,"columnNumber":21}],"parent":{"description":"async function","callFrames":[{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":330,"columnNumber":69},{"functionName":"_initialize","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":62,"columnNumber":27},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":89,"columnNumber":29}],"parent":{"description":"requestIdleCallback","callFrames":[{"functionName":"exports.runWhenIdle","scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","lineNumber":575,"columnNumber":31},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":88,"columnNumber":28}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"ExtensionService","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":86,"columnNumber":59},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"_createServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":176,"columnNumber":28},{"functionName":"_createServiceInstanceWithOwner","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":164,"columnNumber":28},{"functionName":"_createAndCacheServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":155,"columnNumber":42},{"functionName":"_getOrCreateServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":112,"columnNumber":28},{"functionName":"get","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":35,"columnNumber":44},{"functionName":"initLayout","scriptId":"1043","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","lineNumber":135,"columnNumber":41},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":66,"columnNumber":25},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}}}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104605,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"warning","args":[{"type":"string","value":"Extension 'vscode.notebook-renderers' uses PROPOSED API which is subject to change and removal without notice."}],"executionContextId":1,"timestamp":1588425104591.063,"stackTrace":{"callFrames":[{"functionName":"updateEnableProposedApi","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":379,"columnNumber":32},{"functionName":"_checkEnableProposedApi","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":199,"columnNumber":48},{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":332,"columnNumber":21}],"parent":{"description":"async function","callFrames":[{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":330,"columnNumber":69},{"functionName":"_initialize","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":62,"columnNumber":27},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":89,"columnNumber":29}],"parent":{"description":"requestIdleCallback","callFrames":[{"functionName":"exports.runWhenIdle","scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","lineNumber":575,"columnNumber":31},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":88,"columnNumber":28}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"ExtensionService","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":86,"columnNumber":59},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"_createServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":176,"columnNumber":28},{"functionName":"_createServiceInstanceWithOwner","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":164,"columnNumber":28},{"functionName":"_createAndCacheServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":155,"columnNumber":42},{"functionName":"_getOrCreateServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":112,"columnNumber":28},{"functionName":"get","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":35,"columnNumber":44},{"functionName":"initLayout","scriptId":"1043","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","lineNumber":135,"columnNumber":41},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":66,"columnNumber":25},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}}}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425104629,"metadata":{"connectionId":0,"message":{"seq":24,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Target.attachedToTarget":{"operation":"Target.attachedToTarget","totalTime":0.4,"max":0.3,"avg":0.1,"stddev":0.2,"count":3,"failed":0},"Target.attachedToTarget.errors":[],"Target.targetCreated":{"operation":"Target.targetCreated","totalTime":0.5,"max":0.2,"avg":0.1,"stddev":0.1,"count":5,"failed":0},"Target.targetCreated.errors":[],"Target.targetInfoChanged":{"operation":"Target.targetInfoChanged","totalTime":0.4,"max":0.2,"avg":0.1,"stddev":0.1,"count":4,"failed":0},"Target.targetInfoChanged.errors":[],"ServiceWorker.workerRegistrationUpdated":{"operation":"ServiceWorker.workerRegistrationUpdated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"ServiceWorker.workerRegistrationUpdated.errors":[],"ServiceWorker.workerVersionUpdated":{"operation":"ServiceWorker.workerVersionUpdated","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"ServiceWorker.workerVersionUpdated.errors":[],"Page.frameStartedLoading":{"operation":"Page.frameStartedLoading","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.frameStartedLoading.errors":[],"Page.frameNavigated":{"operation":"Page.frameNavigated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.frameNavigated.errors":[],"Page.domContentEventFired":{"operation":"Page.domContentEventFired","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.domContentEventFired.errors":[],"Page.loadEventFired":{"operation":"Page.loadEventFired","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.loadEventFired.errors":[],"Page.frameStoppedLoading":{"operation":"Page.frameStoppedLoading","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Page.frameStoppedLoading.errors":[],"Runtime.executionContextCreated":{"operation":"Runtime.executionContextCreated","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Runtime.executionContextCreated.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":82.8,"max":2,"avg":0.1,"stddev":0.1,"count":1587,"failed":0},"Debugger.scriptParsed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":18.3,"max":1.8,"avg":0.1,"stddev":0.2,"count":151,"failed":0},"Network.requestWillBeSent.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":5.9,"max":0.4,"avg":0,"stddev":0.1,"count":151,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":3.7,"max":0.5,"avg":0,"stddev":0,"count":151,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":3.7,"max":1,"avg":0,"stddev":0.1,"count":151,"failed":0},"Network.loadingFinished.errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":5,"max":4.6,"avg":1,"stddev":2,"count":5,"failed":0},"Runtime.consoleAPICalled.errors":[]}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104679,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/id.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/id.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104679,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425104680,"metadata":{"connectionId":1,"message":{"seq":2799,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/id.js","path":"/Users/roblou/code/vscode/out/vs/base/node/id.js","sourceReference":1429657642}}}},"level":0} {"tag":"dap.send","timestamp":1588425104680,"metadata":{"connectionId":1,"message":{"seq":2800,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","sourceReference":1371645033}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104681,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104681,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104682,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/id.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/id.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/id.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/id.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/id.ts","sourceMapSources":["vs/base/node/id.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104682,"metadata":{"connectionId":1,"message":{"seq":2801,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/id.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/id.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104682,"metadata":{"connectionId":1,"message":{"seq":2802,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js","sourceReference":466194340}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104682,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104683,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104683,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104683,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js"},"level":0} {"tag":"dap.send","timestamp":1588425104683,"metadata":{"connectionId":1,"message":{"seq":2803,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104684,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js"},"level":0} {"tag":"dap.send","timestamp":1588425104684,"metadata":{"connectionId":1,"message":{"seq":2804,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js","sourceReference":972530591}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104684,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104684,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/webview/common/mimeTypes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/webview/common/mimeTypes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/mimeTypes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/mimeTypes.ts","sourceMapSources":["vs/workbench/contrib/webview/common/mimeTypes.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104685,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js"},"level":0} {"tag":"dap.send","timestamp":1588425104685,"metadata":{"connectionId":1,"message":{"seq":2805,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/mimeTypes.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/webview/common/mimeTypes.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104686,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104686,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/languageSelector.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/languageSelector.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageSelector.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/languageSelector.ts","sourceMapSources":["vs/editor/common/modes/languageSelector.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104686,"metadata":{"connectionId":1,"message":{"seq":2806,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js","sourceReference":1246971161}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104686,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js"},"level":0} {"tag":"dap.send","timestamp":1588425104686,"metadata":{"connectionId":1,"message":{"seq":2807,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageSelector.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/languageSelector.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104686,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104687,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/rowCache.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rowCache.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/rowCache.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/rowCache.ts","sourceMapSources":["vs/base/browser/ui/list/rowCache.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104687,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104687,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/diff/diffChange.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","sourceMapSources":["vs/base/common/diff/diffChange.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104687,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js"},"level":0} {"tag":"dap.send","timestamp":1588425104687,"metadata":{"connectionId":1,"message":{"seq":2808,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/rowCache.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/rowCache.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104687,"metadata":{"connectionId":1,"message":{"seq":2809,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104688,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104688,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/list/rangeMap.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/rangeMap.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/list/rangeMap.ts","sourceMapSources":["vs/base/browser/ui/list/rangeMap.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104688,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js"},"level":0} {"tag":"dap.send","timestamp":1588425104688,"metadata":{"connectionId":1,"message":{"seq":2810,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/rangeMap.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/rangeMap.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104688,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104688,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standalone/standaloneEnums.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","sourceMapSources":["vs/editor/common/standalone/standaloneEnums.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104689,"metadata":{"connectionId":1,"message":{"seq":2811,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104689,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104689,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/core/keybindingCancellation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/core/keybindingCancellation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/core/keybindingCancellation.ts","sourceMapSources":["vs/editor/browser/core/keybindingCancellation.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104689,"metadata":{"connectionId":1,"message":{"seq":2812,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/core/keybindingCancellation.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/core/keybindingCancellation.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104689,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104690,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104690,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/textAreaHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaHandler.ts","sourceMapSources":["vs/editor/browser/controller/textAreaHandler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104690,"metadata":{"connectionId":1,"message":{"seq":2813,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaHandler.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaHandler.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104690,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104691,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104691,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/pointerHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/pointerHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/pointerHandler.ts","sourceMapSources":["vs/editor/browser/controller/pointerHandler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104691,"metadata":{"connectionId":1,"message":{"seq":2814,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/pointerHandler.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/pointerHandler.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104691,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104692,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104692,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/viewOverlays.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewOverlays.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/viewOverlays.ts","sourceMapSources":["vs/editor/browser/view/viewOverlays.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104692,"metadata":{"connectionId":1,"message":{"seq":2815,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewOverlays.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewOverlays.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104692,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104693,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104693,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/viewController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/viewController.ts","sourceMapSources":["vs/editor/browser/view/viewController.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104693,"metadata":{"connectionId":1,"message":{"seq":2816,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewController.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewController.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104693,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104694,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js"},"level":0} {"tag":"dap.send","timestamp":1588425104695,"metadata":{"connectionId":1,"message":{"seq":2817,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","path":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","sourceReference":792316568}}}},"level":0} {"tag":"dap.send","timestamp":1588425104695,"metadata":{"connectionId":1,"message":{"seq":2818,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/list/rangeMap.js","sourceReference":1090783079}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104695,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104695,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/viewPart.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewPart.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/viewPart.ts","sourceMapSources":["vs/editor/browser/view/viewPart.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104696,"metadata":{"connectionId":1,"message":{"seq":2819,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewPart.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewPart.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104696,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104696,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts","sourceMapSources":["vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104697,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104697,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104697,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts","sourceMapSources":["vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104697,"metadata":{"connectionId":1,"message":{"seq":2820,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104697,"metadata":{"connectionId":1,"message":{"seq":2821,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","sourceReference":1598881736}}}},"level":0} {"tag":"dap.send","timestamp":1588425104697,"metadata":{"connectionId":1,"message":{"seq":2822,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/core/keybindingCancellation.js","sourceReference":677001733}}}},"level":0} {"tag":"dap.send","timestamp":1588425104697,"metadata":{"connectionId":1,"message":{"seq":2823,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/pointerHandler.js","sourceReference":1882966398}}}},"level":0} {"tag":"dap.send","timestamp":1588425104697,"metadata":{"connectionId":1,"message":{"seq":2824,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104698,"metadata":{"connectionId":1,"message":{"seq":2825,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewController.js","sourceReference":152085978}}}},"level":0} {"tag":"dap.send","timestamp":1588425104698,"metadata":{"connectionId":1,"message":{"seq":2826,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewPart.js","sourceReference":546377468}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104698,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104698,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/decorations/decorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/decorations/decorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/decorations/decorations.ts","sourceMapSources":["vs/editor/browser/viewParts/decorations/decorations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104698,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js"},"level":0} {"tag":"dap.send","timestamp":1588425104699,"metadata":{"connectionId":1,"message":{"seq":2827,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/decorations/decorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/decorations/decorations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104699,"metadata":{"connectionId":1,"message":{"seq":2828,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaHandler.js","sourceReference":1547655679}}}},"level":0} {"tag":"dap.send","timestamp":1588425104699,"metadata":{"connectionId":1,"message":{"seq":2829,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewOverlays.js","sourceReference":957606364}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104699,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js"},"level":0} {"tag":"dap.send","timestamp":1588425104700,"metadata":{"connectionId":1,"message":{"seq":2830,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","sourceReference":1307075377}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104700,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104700,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts","sourceMapSources":["vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104701,"metadata":{"connectionId":1,"message":{"seq":2831,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104701,"metadata":{"connectionId":1,"message":{"seq":2832,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/decorations/decorations.js","sourceReference":658193542}}}},"level":0} {"tag":"dap.send","timestamp":1588425104701,"metadata":{"connectionId":1,"message":{"seq":2833,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","sourceReference":863204093}}}},"level":0} {"tag":"dap.send","timestamp":1588425104701,"metadata":{"connectionId":1,"message":{"seq":2834,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","sourceReference":451564738}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104701,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104701,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/indentGuides/indentGuides.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts","sourceMapSources":["vs/editor/browser/viewParts/indentGuides/indentGuides.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104701,"metadata":{"connectionId":1,"message":{"seq":2835,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104702,"metadata":{"connectionId":1,"message":{"seq":2836,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/indentGuides/indentGuides.js","sourceReference":1043030045}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104702,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js"},"level":0} {"tag":"dap.send","timestamp":1588425104702,"metadata":{"connectionId":1,"message":{"seq":2837,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","sourceReference":2016188181}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104702,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104703,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/glyphMargin/glyphMargin.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin.ts","sourceMapSources":["vs/editor/browser/viewParts/glyphMargin/glyphMargin.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104703,"metadata":{"connectionId":1,"message":{"seq":2838,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104703,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104704,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104704,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts","sourceMapSources":["vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104704,"metadata":{"connectionId":1,"message":{"seq":2839,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104704,"metadata":{"connectionId":1,"message":{"seq":2840,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","sourceReference":273990129}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104706,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104707,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104707,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/lines/viewLines.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLines.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLines.ts","sourceMapSources":["vs/editor/browser/viewParts/lines/viewLines.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104707,"metadata":{"connectionId":1,"message":{"seq":2841,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLines.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLines.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104708,"metadata":{"connectionId":1,"message":{"seq":2842,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLines.js","sourceReference":1316948537}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104708,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104709,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104709,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/linesDecorations/linesDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/linesDecorations/linesDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/linesDecorations/linesDecorations.ts","sourceMapSources":["vs/editor/browser/viewParts/linesDecorations/linesDecorations.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104709,"metadata":{"connectionId":1,"message":{"seq":2843,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/linesDecorations/linesDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/linesDecorations/linesDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104709,"metadata":{"connectionId":1,"message":{"seq":2844,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","sourceReference":1560301212}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104711,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104711,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104712,"metadata":{"connectionId":1,"message":{"seq":2845,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js","sourceReference":1978431459}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104712,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104712,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/margin/margin.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/margin/margin.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/margin/margin.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/margin/margin.ts","sourceMapSources":["vs/editor/browser/viewParts/margin/margin.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104713,"metadata":{"connectionId":1,"message":{"seq":2846,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","sourceReference":1144117015}}}},"level":0} {"tag":"dap.send","timestamp":1588425104716,"metadata":{"connectionId":1,"message":{"seq":2847,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/margin/margin.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/margin/margin.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104717,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104717,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/marginDecorations/marginDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/marginDecorations/marginDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/marginDecorations/marginDecorations.ts","sourceMapSources":["vs/editor/browser/viewParts/marginDecorations/marginDecorations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104717,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104717,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js"},"level":0} {"tag":"dap.send","timestamp":1588425104718,"metadata":{"connectionId":1,"message":{"seq":2848,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/marginDecorations/marginDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/marginDecorations/marginDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104720,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104720,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104720,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts","sourceMapSources":["vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104720,"metadata":{"connectionId":1,"message":{"seq":2849,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","sourceReference":1521660381}}}},"level":0} {"tag":"dap.send","timestamp":1588425104720,"metadata":{"connectionId":1,"message":{"seq":2850,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","sourceReference":2014347602}}}},"level":0} {"tag":"dap.send","timestamp":1588425104721,"metadata":{"connectionId":1,"message":{"seq":2851,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104721,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104721,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.ts","sourceMapSources":["vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104721,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js"},"level":0} {"tag":"dap.send","timestamp":1588425104722,"metadata":{"connectionId":1,"message":{"seq":2852,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104722,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js"},"level":0} {"tag":"dap.send","timestamp":1588425104729,"metadata":{"connectionId":1,"message":{"seq":2853,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js","sourceReference":1998391820}}}},"level":0} {"tag":"dap.send","timestamp":1588425104729,"metadata":{"connectionId":1,"message":{"seq":2854,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","sourceReference":710479735}}}},"level":0} {"tag":"dap.send","timestamp":1588425104730,"metadata":{"connectionId":1,"message":{"seq":2855,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","sourceReference":1468671572}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104730,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104730,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/minimap/minimap.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimap.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimap.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimap.ts","sourceMapSources":["vs/editor/browser/viewParts/minimap/minimap.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104730,"metadata":{"connectionId":1,"message":{"seq":2856,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimap.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimap.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104731,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104731,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/overviewRuler/overviewRuler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/overviewRuler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/overviewRuler.ts","sourceMapSources":["vs/editor/browser/viewParts/overviewRuler/overviewRuler.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104731,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js"},"level":0} {"tag":"dap.send","timestamp":1588425104731,"metadata":{"connectionId":1,"message":{"seq":2857,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/overviewRuler.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/overviewRuler/overviewRuler.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104732,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104732,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts","sourceMapSources":["vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104732,"metadata":{"connectionId":1,"message":{"seq":2858,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104732,"metadata":{"connectionId":1,"message":{"seq":2859,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js","sourceReference":653220778}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104732,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104733,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104733,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/viewCursors/viewCursors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursors.ts","sourceMapSources":["vs/editor/browser/viewParts/viewCursors/viewCursors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104733,"metadata":{"connectionId":1,"message":{"seq":2860,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursors.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104734,"metadata":{"connectionId":1,"message":{"seq":2861,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js","sourceReference":783813762}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104734,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104734,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/rulers/rulers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/rulers/rulers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/rulers/rulers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/rulers/rulers.ts","sourceMapSources":["vs/editor/browser/viewParts/rulers/rulers.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104734,"metadata":{"connectionId":1,"message":{"seq":2862,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/rulers/rulers.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/rulers/rulers.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104734,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104735,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104735,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/selections/selections.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/selections/selections.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/selections/selections.ts","sourceMapSources":["vs/editor/browser/viewParts/selections/selections.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104735,"metadata":{"connectionId":1,"message":{"seq":2863,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/selections/selections.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/selections/selections.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104735,"metadata":{"connectionId":1,"message":{"seq":2864,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/selections/selections.js","sourceReference":503252249}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104774,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.156","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/onig.wasm","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"High","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547786.844347,"wallTime":1588425104.722711,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"_loadVSCodeOnigurumWASM","scriptId":"108","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/electron-browser/textMateService.js","lineNumber":144,"columnNumber":39},{"functionName":"_doGetVSCodeOniguruma","scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","lineNumber":330,"columnNumber":167},{"functionName":"_getVSCodeOniguruma","scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","lineNumber":325,"columnNumber":49},{"functionName":"_getOrCreateGrammarFactory","scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","lineNumber":178,"columnNumber":176},{"functionName":"","scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","lineNumber":208,"columnNumber":58},{"functionName":"_registerDefinitionIfAvailable","scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","lineNumber":229,"columnNumber":18},{"functionName":"","scriptId":"379","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/textMate/browser/abstractTextMateService.js","lineNumber":108,"columnNumber":29},{"functionName":"_handle","scriptId":"511","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js","lineNumber":86,"columnNumber":21},{"functionName":"acceptUsers","scriptId":"511","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/extensionsRegistry.js","lineNumber":79,"columnNumber":17},{"functionName":"_handleExtensionPoint","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":284,"columnNumber":31},{"functionName":"_doHandleExtensionPoints","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":246,"columnNumber":49},{"functionName":"_registerAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":435,"columnNumber":21},{"functionName":"_startLocalExtensionHost","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":427,"columnNumber":21},{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":423,"columnNumber":31}],"parent":{"description":"async function","callFrames":[{"functionName":"_scanAndHandleExtensions","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":330,"columnNumber":69},{"functionName":"_initialize","scriptId":"455","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/abstractExtensionService.js","lineNumber":62,"columnNumber":27},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":89,"columnNumber":29}],"parent":{"description":"requestIdleCallback","callFrames":[{"functionName":"exports.runWhenIdle","scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","lineNumber":575,"columnNumber":31},{"functionName":"","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":88,"columnNumber":28}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"ExtensionService","scriptId":"117","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/electron-browser/extensionService.js","lineNumber":86,"columnNumber":59},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"_createServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":176,"columnNumber":28},{"functionName":"_createServiceInstanceWithOwner","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":164,"columnNumber":28},{"functionName":"_createAndCacheServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":155,"columnNumber":42},{"functionName":"_getOrCreateServiceInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":112,"columnNumber":28},{"functionName":"get","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":35,"columnNumber":44},{"functionName":"initLayout","scriptId":"1043","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/layout.js","lineNumber":135,"columnNumber":41},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":66,"columnNumber":25},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"startup","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":60,"columnNumber":37},{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":60,"columnNumber":51}],"parent":{"description":"async function","callFrames":[{"functionName":"open","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":52,"columnNumber":40},{"functionName":"main","scriptId":"110","url":"file:///Users/roblou/code/vscode/out/vs/workbench/electron-browser/desktop.main.js","lineNumber":228,"columnNumber":25},{"functionName":"","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":32,"columnNumber":64}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"bootstrapWindow.load.removeDeveloperKeybindingsAfterLoad","scriptId":"64","url":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.js","lineNumber":28,"columnNumber":28},{"functionName":"","scriptId":"66","url":"/Users/roblou/code/vscode/out/bootstrap-window.js","lineNumber":129,"columnNumber":26},{"functionName":"Module._invokeFactory","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1039,"columnNumber":40},{"functionName":"Module.complete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"NodeScriptLoader._createAndEvalScript","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":796,"columnNumber":16},{"functionName":"","scriptId":"68","url":"/Users/roblou/code/vscode/out/vs/loader.js","lineNumber":775,"columnNumber":39},{"functionName":"readFileAfterClose","scriptId":"94","url":"internal/fs/read_file_context.js","lineNumber":60,"columnNumber":2}]}}}}}}},"type":"Fetch","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104797,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js"},"level":0} {"tag":"dap.send","timestamp":1588425104798,"metadata":{"connectionId":1,"message":{"seq":2865,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js","sourceReference":35335686}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104798,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104798,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/view/viewContext.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewContext.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewContext.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/view/viewContext.ts","sourceMapSources":["vs/editor/common/view/viewContext.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104798,"metadata":{"connectionId":1,"message":{"seq":2866,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewContext.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewContext.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104799,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104799,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js"},"level":0} {"tag":"dap.send","timestamp":1588425104800,"metadata":{"connectionId":1,"message":{"seq":2867,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js","sourceReference":1542907460}}}},"level":0} {"tag":"dap.send","timestamp":1588425104801,"metadata":{"connectionId":1,"message":{"seq":2868,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js","sourceReference":1714052361}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104802,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104802,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104802,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/viewZones/viewZones.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewZones/viewZones.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewZones/viewZones.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewZones/viewZones.ts","sourceMapSources":["vs/editor/browser/viewParts/viewZones/viewZones.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104803,"metadata":{"connectionId":1,"message":{"seq":2869,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewZones/viewZones.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewZones/viewZones.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104803,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104803,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/view/renderingContext.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/view/renderingContext.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/view/renderingContext.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/view/renderingContext.ts","sourceMapSources":["vs/editor/common/view/renderingContext.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104803,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js"},"level":0} {"tag":"dap.send","timestamp":1588425104803,"metadata":{"connectionId":1,"message":{"seq":2870,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js","sourceReference":1263799862}}}},"level":0} {"tag":"dap.send","timestamp":1588425104804,"metadata":{"connectionId":1,"message":{"seq":2871,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/view/renderingContext.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/view/renderingContext.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104804,"metadata":{"connectionId":1,"message":{"seq":2872,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js","sourceReference":2065535652}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104804,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.156","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547786.923329,"type":"Fetch","response":{"url":"file:///Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/onig.wasm","status":200,"statusText":"OK","headers":{"Content-Type":"application/wasm"},"mimeType":"application/wasm","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104805,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104805,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104806,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104806,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/view/viewEventDispatcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEventDispatcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewEventDispatcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/view/viewEventDispatcher.ts","sourceMapSources":["vs/editor/common/view/viewEventDispatcher.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104806,"metadata":{"connectionId":1,"message":{"seq":2873,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js","sourceReference":2044531450}}}},"level":0} {"tag":"dap.send","timestamp":1588425104806,"metadata":{"connectionId":1,"message":{"seq":2874,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js","sourceReference":351463399}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104806,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js"},"level":0} {"tag":"dap.send","timestamp":1588425104806,"metadata":{"connectionId":1,"message":{"seq":2875,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewEventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewEventDispatcher.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104807,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104807,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewLayout/viewLinesViewportData.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLinesViewportData.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLinesViewportData.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLinesViewportData.ts","sourceMapSources":["vs/editor/common/viewLayout/viewLinesViewportData.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104807,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js"},"level":0} {"tag":"dap.send","timestamp":1588425104808,"metadata":{"connectionId":1,"message":{"seq":2876,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLinesViewportData.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLinesViewportData.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104809,"metadata":{"connectionId":1,"message":{"seq":2877,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js","sourceReference":626336407}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104815,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104816,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104816,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/viewEventHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewEventHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewEventHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewEventHandler.ts","sourceMapSources":["vs/editor/common/viewModel/viewEventHandler.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104816,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js"},"level":0} {"tag":"dap.send","timestamp":1588425104816,"metadata":{"connectionId":1,"message":{"seq":2878,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js","sourceReference":780327286}}}},"level":0} {"tag":"dap.send","timestamp":1588425104816,"metadata":{"connectionId":1,"message":{"seq":2879,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js","sourceReference":1567435298}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104817,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js"},"level":0} {"tag":"dap.send","timestamp":1588425104818,"metadata":{"connectionId":1,"message":{"seq":2880,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewEventHandler.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewEventHandler.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104818,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104818,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/view/viewEvents.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/view/viewEvents.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewEvents.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/view/viewEvents.ts","sourceMapSources":["vs/editor/common/view/viewEvents.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104818,"metadata":{"connectionId":1,"message":{"seq":2881,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js","sourceReference":1870711223}}}},"level":0} {"tag":"dap.send","timestamp":1588425104818,"metadata":{"connectionId":1,"message":{"seq":2882,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js","sourceReference":523199211}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104818,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104818,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104818,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/cursorCollection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/cursorCollection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCollection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCollection.ts","sourceMapSources":["vs/editor/common/controller/cursorCollection.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104819,"metadata":{"connectionId":1,"message":{"seq":2883,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewEvents.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/view/viewEvents.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104819,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104819,"metadata":{"connectionId":1,"message":{"seq":2884,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCollection.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/cursorCollection.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104820,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104820,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/mouseTarget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseTarget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseTarget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseTarget.ts","sourceMapSources":["vs/editor/browser/controller/mouseTarget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104820,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104820,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104820,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/minimapTokensColorTracker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/minimapTokensColorTracker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/minimapTokensColorTracker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/minimapTokensColorTracker.ts","sourceMapSources":["vs/editor/common/viewModel/minimapTokensColorTracker.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104821,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104821,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewLayout/viewLayout.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/viewLayout.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLayout.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLayout.ts","sourceMapSources":["vs/editor/common/viewLayout/viewLayout.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104821,"metadata":{"connectionId":1,"message":{"seq":2885,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseTarget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseTarget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104821,"metadata":{"connectionId":1,"message":{"seq":2886,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/minimapTokensColorTracker.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/minimapTokensColorTracker.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104821,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104821,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/commands/surroundSelectionCommand.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/commands/surroundSelectionCommand.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/commands/surroundSelectionCommand.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/commands/surroundSelectionCommand.ts","sourceMapSources":["vs/editor/common/commands/surroundSelectionCommand.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104821,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js"},"level":0} {"tag":"dap.send","timestamp":1588425104822,"metadata":{"connectionId":1,"message":{"seq":2887,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLayout.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/viewLayout.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104822,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104822,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/splitLinesCollection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/splitLinesCollection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/splitLinesCollection.ts","sourceMapSources":["vs/editor/common/viewModel/splitLinesCollection.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104822,"metadata":{"connectionId":1,"message":{"seq":2888,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/commands/surroundSelectionCommand.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/commands/surroundSelectionCommand.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104822,"metadata":{"connectionId":1,"message":{"seq":2889,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/splitLinesCollection.js","sourceReference":419065940}}}},"level":0} {"tag":"dap.send","timestamp":1588425104822,"metadata":{"connectionId":1,"message":{"seq":2890,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js","sourceReference":771794616}}}},"level":0} {"tag":"dap.send","timestamp":1588425104822,"metadata":{"connectionId":1,"message":{"seq":2891,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js","sourceReference":101197176}}}},"level":0} {"tag":"dap.send","timestamp":1588425104822,"metadata":{"connectionId":1,"message":{"seq":2892,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js","sourceReference":999899864}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104823,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js"},"level":0} {"tag":"dap.send","timestamp":1588425104823,"metadata":{"connectionId":1,"message":{"seq":2893,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/splitLinesCollection.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/splitLinesCollection.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104823,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104823,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/viewModelDecorations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/viewModelDecorations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelDecorations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelDecorations.ts","sourceMapSources":["vs/editor/common/viewModel/viewModelDecorations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104823,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104824,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104824,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/textAreaState.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/textAreaState.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaState.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaState.ts","sourceMapSources":["vs/editor/browser/controller/textAreaState.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104824,"metadata":{"connectionId":1,"message":{"seq":2894,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelDecorations.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/viewModelDecorations.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104824,"metadata":{"connectionId":1,"message":{"seq":2895,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js","sourceReference":1647249941}}}},"level":0} {"tag":"dap.send","timestamp":1588425104824,"metadata":{"connectionId":1,"message":{"seq":2896,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js","sourceReference":1854412051}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104825,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js"},"level":0} {"tag":"dap.send","timestamp":1588425104825,"metadata":{"connectionId":1,"message":{"seq":2897,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaState.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/textAreaState.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104825,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104826,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104826,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/findinput/findInputCheckboxes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/findinput/findInputCheckboxes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts","sourceMapSources":["vs/base/browser/ui/findinput/findInputCheckboxes.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104827,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425104827,"metadata":{"connectionId":1,"message":{"seq":2898,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js","sourceReference":198564904}}}},"level":0} {"tag":"dap.send","timestamp":1588425104827,"metadata":{"connectionId":1,"message":{"seq":2899,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uint.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uint.js","sourceReference":469011587}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104827,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1598","url":"/Users/roblou/code/vscode/node_modules/vscode-textmate/release/main.js","startLine":0,"startColumn":0,"endLine":3863,"endColumn":66,"executionContextId":1,"hash":"060b3bae01c1b9ef2b681a3b4834fbbb00fa02a9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":151226,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104827,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1599","url":"/Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/main.js","startLine":0,"startColumn":0,"endLine":1,"endColumn":66,"executionContextId":1,"hash":"2865bfe808b123a1669fe4077550c93b5b1aa74b","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":14367,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425104827,"metadata":{"connectionId":1,"message":{"seq":2900,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104827,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104828,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/codeActionUi.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionUi.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionUi.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionUi.ts","sourceMapSources":["vs/editor/contrib/codeAction/codeActionUi.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104828,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104828,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/codeActionModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionModel.ts","sourceMapSources":["vs/editor/contrib/codeAction/codeActionModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104828,"metadata":{"connectionId":1,"message":{"seq":2901,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionUi.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionUi.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104828,"metadata":{"connectionId":1,"message":{"seq":2902,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104828,"metadata":{"connectionId":1,"message":{"seq":2903,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js","sourceReference":148518886}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104828,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104829,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104829,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/folding/foldingRanges.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/folding/foldingRanges.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingRanges.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingRanges.ts","sourceMapSources":["vs/editor/contrib/folding/foldingRanges.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104829,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104829,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uint.ts","sourceMapSources":["vs/base/common/uint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104830,"metadata":{"connectionId":1,"message":{"seq":2904,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingRanges.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/folding/foldingRanges.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104830,"metadata":{"connectionId":1,"message":{"seq":2905,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104830,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425104830,"metadata":{"connectionId":1,"message":{"seq":2906,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js","sourceReference":266393078}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104830,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104830,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/colorPicker/colorPickerWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget.ts","sourceMapSources":["vs/editor/contrib/colorPicker/colorPickerWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104831,"metadata":{"connectionId":1,"message":{"seq":2907,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104831,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104831,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/colorPicker/colorPickerModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/colorPicker/colorPickerModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerModel.ts","sourceMapSources":["vs/editor/contrib/colorPicker/colorPickerModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104832,"metadata":{"connectionId":1,"message":{"seq":2908,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/colorPicker/colorPickerModel.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104832,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js"},"level":0} {"tag":"dap.send","timestamp":1588425104832,"metadata":{"connectionId":1,"message":{"seq":2909,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js","sourceReference":744383870}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104832,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104832,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/peek/referencesWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/peek/referencesWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104876,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104876,"metadata":{"connectionId":1,"message":{"seq":2910,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104888,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js"},"level":0} {"tag":"dap.send","timestamp":1588425104889,"metadata":{"connectionId":1,"message":{"seq":2911,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js","sourceReference":1183291149}}}},"level":0} {"tag":"dap.send","timestamp":1588425104889,"metadata":{"connectionId":1,"message":{"seq":2912,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js","sourceReference":1496818133}}}},"level":0} {"tag":"dap.send","timestamp":1588425104891,"metadata":{"connectionId":1,"message":{"seq":2913,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js","sourceReference":1726742362}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104892,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547786.954146,"dataLength":65536,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104892,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547786.973406,"dataLength":65536,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104892,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547786.977687,"dataLength":65536,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104892,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547787.009527,"dataLength":65536,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104892,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547787.010095,"dataLength":65536,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104893,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104894,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104894,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/hover/hoverWidgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverWidgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverWidgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverWidgets.ts","sourceMapSources":["vs/editor/contrib/hover/hoverWidgets.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104894,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425104895,"metadata":{"connectionId":1,"message":{"seq":2914,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverWidgets.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverWidgets.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104895,"metadata":{"connectionId":1,"message":{"seq":2915,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js","path":"/Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js","sourceReference":1358800024}}}},"level":0} {"tag":"dap.send","timestamp":1588425104895,"metadata":{"connectionId":1,"message":{"seq":2916,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js","sourceReference":1551366887}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104895,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104895,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104895,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/markdown/markdownRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/markdown/markdownRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/markdown/markdownRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/markdown/markdownRenderer.ts","sourceMapSources":["vs/editor/contrib/markdown/markdownRenderer.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104896,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104896,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/hover/hoverOperation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/hover/hoverOperation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverOperation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverOperation.ts","sourceMapSources":["vs/editor/contrib/hover/hoverOperation.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104896,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js"},"level":0} {"tag":"dap.send","timestamp":1588425104897,"metadata":{"connectionId":1,"message":{"seq":2917,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/markdown/markdownRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/markdown/markdownRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104897,"metadata":{"connectionId":1,"message":{"seq":2918,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverOperation.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/hover/hoverOperation.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104897,"metadata":{"connectionId":1,"message":{"seq":2919,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js","sourceReference":506698396}}}},"level":0} {"tag":"dap.send","timestamp":1588425104897,"metadata":{"connectionId":1,"message":{"seq":2920,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js","sourceReference":1831950750}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104897,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104897,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104897,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/log/common/bufferLog.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/log/common/bufferLog.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/log/common/bufferLog.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/log/common/bufferLog.ts","sourceMapSources":["vs/platform/log/common/bufferLog.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104898,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104898,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/completionModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/completionModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/completionModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/completionModel.ts","sourceMapSources":["vs/editor/contrib/suggest/completionModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104898,"metadata":{"connectionId":1,"message":{"seq":2921,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/bufferLog.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/bufferLog.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104898,"metadata":{"connectionId":1,"message":{"seq":2922,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/completionModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/completionModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104899,"metadata":{"connectionId":1,"message":{"seq":2923,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js","sourceReference":1609065235}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104899,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104899,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104899,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/parameterHints/parameterHintsModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/parameterHints/parameterHintsModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts","sourceMapSources":["vs/editor/contrib/parameterHints/parameterHintsModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104900,"metadata":{"connectionId":1,"message":{"seq":2924,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104900,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104900,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/suggest/wordDistance.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/suggest/wordDistance.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordDistance.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordDistance.ts","sourceMapSources":["vs/editor/contrib/suggest/wordDistance.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104900,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104900,"metadata":{"connectionId":1,"message":{"seq":2925,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js","sourceReference":1979003348}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104901,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104901,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/extHostRpcService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostRpcService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostRpcService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/extHostRpcService.ts","sourceMapSources":["vs/workbench/api/common/extHostRpcService.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104901,"metadata":{"connectionId":1,"message":{"seq":2926,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordDistance.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/suggest/wordDistance.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104901,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425104902,"metadata":{"connectionId":1,"message":{"seq":2927,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostRpcService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostRpcService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104902,"metadata":{"connectionId":1,"message":{"seq":2928,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js","sourceReference":229566064}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104902,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104902,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104902,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/common/commentModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentModel.ts","sourceMapSources":["vs/workbench/contrib/comments/common/commentModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104903,"metadata":{"connectionId":1,"message":{"seq":2929,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104903,"metadata":{"connectionId":1,"message":{"seq":2930,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js","sourceReference":1652602536}}}},"level":0} {"tag":"dap.send","timestamp":1588425104903,"metadata":{"connectionId":1,"message":{"seq":2931,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js","sourceReference":287661405}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104906,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104906,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104906,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/markdownRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/markdownRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/markdownRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/markdownRenderer.ts","sourceMapSources":["vs/base/browser/markdownRenderer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104907,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js"},"level":0} {"tag":"dap.send","timestamp":1588425104907,"metadata":{"connectionId":1,"message":{"seq":2932,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/markdownRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/markdownRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104907,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104907,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104907,"metadata":{"connectionId":1,"message":{"seq":2933,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","sourceReference":1742934144}}}},"level":0} {"tag":"dap.send","timestamp":1588425104908,"metadata":{"connectionId":1,"message":{"seq":2934,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104908,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104908,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/verticalScrollbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/verticalScrollbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/verticalScrollbar.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104908,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/scrollable.js"},"level":0} {"tag":"dap.send","timestamp":1588425104909,"metadata":{"connectionId":1,"message":{"seq":2935,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104909,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104909,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104909,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/horizontalScrollbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/horizontalScrollbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/horizontalScrollbar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104910,"metadata":{"connectionId":1,"message":{"seq":2936,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104910,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104910,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/api/common/extHostTypes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypes.ts","sourceMapSources":["vs/workbench/api/common/extHostTypes.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104910,"metadata":{"connectionId":1,"message":{"seq":2937,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypes.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/api/common/extHostTypes.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104911,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104911,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/scrollable.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/scrollable.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/scrollable.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/scrollable.ts","sourceMapSources":["vs/base/common/scrollable.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104911,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js"},"level":0} {"tag":"dap.send","timestamp":1588425104911,"metadata":{"connectionId":1,"message":{"seq":2938,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/scrollable.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/scrollable.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104912,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104912,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/titleControl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/titleControl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/titleControl.ts","sourceMapSources":["vs/workbench/browser/parts/editor/titleControl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104912,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js"},"level":0} {"tag":"dap.send","timestamp":1588425104912,"metadata":{"connectionId":1,"message":{"seq":2939,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js","path":"/Users/roblou/code/vscode/out/vs/workbench/api/common/extHostTypes.js","sourceReference":1981016522}}}},"level":0} {"tag":"dap.send","timestamp":1588425104912,"metadata":{"connectionId":1,"message":{"seq":2940,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/scrollable.js","path":"/Users/roblou/code/vscode/out/vs/base/common/scrollable.js","sourceReference":1082399137}}}},"level":0} {"tag":"dap.send","timestamp":1588425104912,"metadata":{"connectionId":1,"message":{"seq":2941,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/titleControl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/titleControl.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104913,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js"},"level":0} {"tag":"dap.send","timestamp":1588425104913,"metadata":{"connectionId":1,"message":{"seq":2942,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/titleControl.js","sourceReference":1312312085}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104913,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104913,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/userDataSync/common/settingsMerge.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/settingsMerge.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/userDataSync/common/settingsMerge.ts","sourceMapSources":["vs/platform/userDataSync/common/settingsMerge.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104914,"metadata":{"connectionId":1,"message":{"seq":2943,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/settingsMerge.ts","path":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/settingsMerge.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104914,"metadata":{"connectionId":1,"message":{"seq":2944,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js","path":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/settingsMerge.js","sourceReference":773470907}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104914,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104914,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/quickinput/browser/quickInputList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputList.ts","sourceMapSources":["vs/base/parts/quickinput/browser/quickInputList.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104915,"metadata":{"connectionId":1,"message":{"seq":2945,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputList.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputList.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104915,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104915,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/breadcrumbsControl.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts","sourceMapSources":["vs/workbench/browser/parts/editor/breadcrumbsControl.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104915,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js"},"level":0} {"tag":"dap.send","timestamp":1588425104915,"metadata":{"connectionId":1,"message":{"seq":2946,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputList.js","sourceReference":1890047755}}}},"level":0} {"tag":"dap.send","timestamp":1588425104916,"metadata":{"connectionId":1,"message":{"seq":2947,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104916,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/search.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/search.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104918,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js"},"level":0} {"tag":"dap.send","timestamp":1588425104918,"metadata":{"connectionId":1,"message":{"seq":2948,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsControl.js","sourceReference":1154687039}}}},"level":0} {"tag":"dap.send","timestamp":1588425104918,"metadata":{"connectionId":1,"message":{"seq":2949,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js","sourceReference":353606207}}}},"level":0} {"tag":"dap.send","timestamp":1588425104918,"metadata":{"connectionId":1,"message":{"seq":2950,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/search.js","path":"/Users/roblou/code/vscode/out/vs/base/common/search.js","sourceReference":645192168}}}},"level":0} {"tag":"dap.send","timestamp":1588425104918,"metadata":{"connectionId":1,"message":{"seq":2951,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js","path":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js","sourceReference":385224513}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425104919,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547787.039052,"dataLength":65536,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104919,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.156","timestamp":547787.039719,"dataLength":55664,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104919,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104921,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104921,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/quickinput/browser/quickInputBox.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputBox.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputBox.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputBox.ts","sourceMapSources":["vs/base/parts/quickinput/browser/quickInputBox.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104921,"metadata":{"connectionId":1,"message":{"seq":2952,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputBox.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputBox.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104921,"metadata":{"connectionId":1,"message":{"seq":2953,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js","sourceReference":1421524603}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104921,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104922,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104922,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/search.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/search.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/search.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/search.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/search.ts","sourceMapSources":["vs/base/common/search.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104922,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104922,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/parts/quickinput/browser/quickInputUtils.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInputUtils.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputUtils.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputUtils.ts","sourceMapSources":["vs/base/parts/quickinput/browser/quickInputUtils.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104923,"metadata":{"connectionId":1,"message":{"seq":2954,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/search.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/search.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104923,"metadata":{"connectionId":1,"message":{"seq":2955,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputUtils.ts","path":"/Users/roblou/code/vscode/src/vs/base/parts/quickinput/browser/quickInputUtils.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104923,"metadata":{"connectionId":1,"message":{"seq":2956,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js","sourceReference":950326392}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104923,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104924,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104924,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugSchemas.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugSchemas.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugSchemas.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104924,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js"},"level":0} {"tag":"dap.send","timestamp":1588425104924,"metadata":{"connectionId":1,"message":{"seq":2957,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104924,"metadata":{"connectionId":1,"message":{"seq":2958,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js","sourceReference":1750866148}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104924,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104925,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104925,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentFormActions.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentFormActions.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentFormActions.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104926,"metadata":{"connectionId":1,"message":{"seq":2959,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104926,"metadata":{"connectionId":1,"message":{"seq":2960,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js","sourceReference":1941812338}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104926,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104926,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104926,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/common/debugger.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/common/debugger.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugger.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugger.ts","sourceMapSources":["vs/workbench/contrib/debug/common/debugger.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104927,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104927,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/debug/browser/rawDebugSession.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/debug/browser/rawDebugSession.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts","sourceMapSources":["vs/workbench/contrib/debug/browser/rawDebugSession.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104927,"metadata":{"connectionId":1,"message":{"seq":2961,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugger.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/common/debugger.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104927,"metadata":{"connectionId":1,"message":{"seq":2962,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js","sourceReference":861670385}}}},"level":0} {"tag":"dap.send","timestamp":1588425104927,"metadata":{"connectionId":1,"message":{"seq":2963,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js","sourceReference":1900445334}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104927,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js"},"level":0} {"tag":"dap.send","timestamp":1588425104928,"metadata":{"connectionId":1,"message":{"seq":2964,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104928,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104928,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/commentNode.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/commentNode.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentNode.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentNode.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/commentNode.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104928,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js"},"level":0} {"tag":"dap.send","timestamp":1588425104929,"metadata":{"connectionId":1,"message":{"seq":2965,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentNode.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/commentNode.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104929,"metadata":{"connectionId":1,"message":{"seq":2966,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js","sourceReference":1287626868}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104929,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104929,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104929,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/common/commentContextKeys.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/common/commentContextKeys.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.ts","sourceMapSources":["vs/workbench/contrib/comments/common/commentContextKeys.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104929,"metadata":{"connectionId":1,"message":{"seq":2967,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js","sourceReference":118357202}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104930,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js"},"level":0} {"tag":"dap.send","timestamp":1588425104930,"metadata":{"connectionId":1,"message":{"seq":2968,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104930,"metadata":{"connectionId":1,"message":{"seq":2969,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js","sourceReference":1892880516}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104931,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104931,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/extensions/browser/extensionRecommendations.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/extensions/browser/extensionRecommendations.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts","sourceMapSources":["vs/workbench/contrib/extensions/browser/extensionRecommendations.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104931,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js"},"level":0} {"tag":"dap.send","timestamp":1588425104932,"metadata":{"connectionId":1,"message":{"seq":2970,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104932,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104932,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/customEditor/common/extensionPoint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/customEditor/common/extensionPoint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.ts","sourceMapSources":["vs/workbench/contrib/customEditor/common/extensionPoint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104932,"metadata":{"connectionId":1,"message":{"seq":2971,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js","sourceReference":298637197}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104932,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104933,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104933,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/widgets/widgetManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgetManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgetManager.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/widgets/widgetManager.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104933,"metadata":{"connectionId":1,"message":{"seq":2972,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104935,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js"},"level":0} {"tag":"dap.send","timestamp":1588425104936,"metadata":{"connectionId":1,"message":{"seq":2973,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgetManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgetManager.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104936,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104936,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104936,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js"},"level":0} {"tag":"dap.send","timestamp":1588425104936,"metadata":{"connectionId":1,"message":{"seq":2974,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js","sourceReference":272084914}}}},"level":0} {"tag":"dap.send","timestamp":1588425104936,"metadata":{"connectionId":1,"message":{"seq":2975,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js","sourceReference":1873641001}}}},"level":0} {"tag":"dap.send","timestamp":1588425104936,"metadata":{"connectionId":1,"message":{"seq":2976,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js","sourceReference":1380528884}}}},"level":0} {"tag":"dap.send","timestamp":1588425104937,"metadata":{"connectionId":1,"message":{"seq":2977,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104937,"metadata":{"connectionId":1,"message":{"seq":2978,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js","sourceReference":1059372740}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104937,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104938,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104938,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalProcessManager.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessManager.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalProcessManager.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104938,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/watcher.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/watcher.js"},"level":0} {"tag":"dap.send","timestamp":1588425104939,"metadata":{"connectionId":1,"message":{"seq":2979,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104939,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104939,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104940,"metadata":{"connectionId":1,"message":{"seq":2980,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js","sourceReference":40966168}}}},"level":0} {"tag":"dap.send","timestamp":1588425104940,"metadata":{"connectionId":1,"message":{"seq":2981,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/watcher.js","path":"/Users/roblou/code/vscode/out/vs/base/node/watcher.js","sourceReference":1162424687}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104942,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104943,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104943,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104943,"metadata":{"connectionId":1,"message":{"seq":2982,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104943,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104943,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/unix/watcherIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/unix/watcherIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc.ts","sourceMapSources":["vs/platform/files/node/watcher/unix/watcherIpc.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104943,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104944,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104944,"metadata":{"connectionId":1,"message":{"seq":2983,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104944,"metadata":{"connectionId":1,"message":{"seq":2984,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104945,"metadata":{"connectionId":1,"message":{"seq":2985,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js","path":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js","sourceReference":805451751}}}},"level":0} {"tag":"dap.send","timestamp":1588425104945,"metadata":{"connectionId":1,"message":{"seq":2986,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js","sourceReference":1441409066}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104945,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104945,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104945,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/nsfw/watcherIpc.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/nsfw/watcherIpc.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc.ts","sourceMapSources":["vs/platform/files/node/watcher/nsfw/watcherIpc.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104945,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104945,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/watcher.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/watcher.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/watcher.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/watcher.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/watcher.ts","sourceMapSources":["vs/base/node/watcher.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104947,"metadata":{"connectionId":1,"message":{"seq":2987,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104947,"metadata":{"connectionId":1,"message":{"seq":2988,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/watcher.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/watcher.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104947,"metadata":{"connectionId":1,"message":{"seq":2989,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js","sourceReference":2066040547}}}},"level":0} {"tag":"dap.send","timestamp":1588425104947,"metadata":{"connectionId":1,"message":{"seq":2990,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js","sourceReference":1654760318}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104947,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104948,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104948,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/files/node/watcher/win32/csharpWatcherService.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/files/node/watcher/win32/csharpWatcherService.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/csharpWatcherService.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/csharpWatcherService.ts","sourceMapSources":["vs/platform/files/node/watcher/win32/csharpWatcherService.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104948,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104948,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104948,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/macAddress.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/node/macAddress.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104949,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104949,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/notifications/notificationsViewer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/notifications/notificationsViewer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts","sourceMapSources":["vs/workbench/browser/parts/notifications/notificationsViewer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104949,"metadata":{"connectionId":1,"message":{"seq":2991,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/csharpWatcherService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/files/node/watcher/win32/csharpWatcherService.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104949,"metadata":{"connectionId":1,"message":{"seq":2992,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104949,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425104949,"metadata":{"connectionId":1,"message":{"seq":2993,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","sourceReference":1141662132}}}},"level":0} {"tag":"dap.send","timestamp":1588425104949,"metadata":{"connectionId":1,"message":{"seq":2994,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/node/macAddress.js","path":"/Users/roblou/code/vscode/out/vs/base/node/macAddress.js","sourceReference":374215596}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104950,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104950,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104950,"metadata":{"connectionId":1,"message":{"seq":2995,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104951,"metadata":{"connectionId":1,"message":{"seq":2996,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425104951,"metadata":{"connectionId":1,"message":{"seq":2997,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104951,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104951,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.ts","sourceMapSources":["vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104951,"metadata":{"connectionId":1,"message":{"seq":2998,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104951,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104951,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceMapSources":["vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104952,"metadata":{"connectionId":1,"message":{"seq":2999,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104952,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104952,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/node/macAddress.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/node/macAddress.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/node/macAddress.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/node/macAddress.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/node/macAddress.ts","sourceMapSources":["vs/base/node/macAddress.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104952,"metadata":{"connectionId":1,"message":{"seq":3000,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/node/macAddress.ts","path":"/Users/roblou/code/vscode/src/vs/base/node/macAddress.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104967,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104969,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js"},"level":0} {"tag":"dap.send","timestamp":1588425104971,"metadata":{"connectionId":1,"message":{"seq":3001,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js","sourceReference":1826282887}}}},"level":0} {"tag":"dap.send","timestamp":1588425104971,"metadata":{"connectionId":1,"message":{"seq":3002,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js","sourceReference":939740951}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104972,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104972,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104972,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/editorDom.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/editorDom.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/editorDom.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/editorDom.ts","sourceMapSources":["vs/editor/browser/editorDom.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104973,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js"},"level":0} {"tag":"dap.send","timestamp":1588425104976,"metadata":{"connectionId":1,"message":{"seq":3003,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js","sourceReference":112324592}}}},"level":0} {"tag":"dap.send","timestamp":1588425104976,"metadata":{"connectionId":1,"message":{"seq":3004,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js","sourceReference":1378058736}}}},"level":0} {"tag":"dap.send","timestamp":1588425104976,"metadata":{"connectionId":1,"message":{"seq":3005,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/editorDom.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/editorDom.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104977,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104977,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/controller/mouseHandler.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/controller/mouseHandler.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseHandler.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseHandler.ts","sourceMapSources":["vs/editor/browser/controller/mouseHandler.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104977,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js"},"level":0} {"tag":"dap.send","timestamp":1588425104979,"metadata":{"connectionId":1,"message":{"seq":3006,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseHandler.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/controller/mouseHandler.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104979,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js"},"level":0} {"tag":"dap.send","timestamp":1588425104980,"metadata":{"connectionId":1,"message":{"seq":3007,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js","sourceReference":400622253}}}},"level":0} {"tag":"dap.send","timestamp":1588425104980,"metadata":{"connectionId":1,"message":{"seq":3008,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js","sourceReference":1645010489}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104981,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104981,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/dynamicViewOverlay.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/dynamicViewOverlay.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/dynamicViewOverlay.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/dynamicViewOverlay.ts","sourceMapSources":["vs/editor/browser/view/dynamicViewOverlay.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104982,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js"},"level":0} {"tag":"dap.send","timestamp":1588425104982,"metadata":{"connectionId":1,"message":{"seq":3009,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/dynamicViewOverlay.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/dynamicViewOverlay.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104982,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104982,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/view/viewLayer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/view/viewLayer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewLayer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/view/viewLayer.ts","sourceMapSources":["vs/editor/browser/view/viewLayer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104983,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js"},"level":0} {"tag":"dap.send","timestamp":1588425104983,"metadata":{"connectionId":1,"message":{"seq":3010,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewLayer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/view/viewLayer.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104983,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104983,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/globalMouseMoveMonitor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/globalMouseMoveMonitor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/globalMouseMoveMonitor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/globalMouseMoveMonitor.ts","sourceMapSources":["vs/base/browser/globalMouseMoveMonitor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104984,"metadata":{"connectionId":1,"message":{"seq":3011,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js","sourceReference":140684559}}}},"level":0} {"tag":"dap.send","timestamp":1588425104984,"metadata":{"connectionId":1,"message":{"seq":3012,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","sourceReference":373159784}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104984,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js"},"level":0} {"tag":"dap.send","timestamp":1588425104985,"metadata":{"connectionId":1,"message":{"seq":3013,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/globalMouseMoveMonitor.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/globalMouseMoveMonitor.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104985,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104986,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104986,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/lines/viewLine.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/viewLine.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLine.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLine.ts","sourceMapSources":["vs/editor/browser/viewParts/lines/viewLine.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104986,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js"},"level":0} {"tag":"dap.send","timestamp":1588425104988,"metadata":{"connectionId":1,"message":{"seq":3014,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js","sourceReference":433672880}}}},"level":0} {"tag":"dap.send","timestamp":1588425104989,"metadata":{"connectionId":1,"message":{"seq":3015,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js","sourceReference":667425538}}}},"level":0} {"tag":"dap.send","timestamp":1588425104989,"metadata":{"connectionId":1,"message":{"seq":3016,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js","sourceReference":2073139997}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104993,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104993,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/rgba.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/rgba.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/rgba.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/rgba.ts","sourceMapSources":["vs/editor/common/core/rgba.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425104993,"metadata":{"connectionId":1,"message":{"seq":3017,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLine.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/viewLine.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425104993,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104993,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.ts","sourceMapSources":["vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425104993,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425104993,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-5","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-5","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ee67d842","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-6","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-6","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ee67d842","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-7","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-7","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b459f0be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-8","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-8","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e1ac1ca2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-9","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-9","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ad90607a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-10","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-10","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"38b127de","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-11","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-11","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0b7553c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-12","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-12","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b271797a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-13","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-13","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9b07aa46","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-14","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-14","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f0dfe152","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-15","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-15","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b2e9f3fa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-16","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-16","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"72c97266","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-17","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-17","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8745865a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-18","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-18","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4227d3e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-19","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-19","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5f1d15e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-20","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-20","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"63ba2662","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-21","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-21","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9f75ceca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-22","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-22","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"18576e9e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-23","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-23","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5450f296","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-24","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-24","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8979e36e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-25","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-25","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9c32ad7e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-26","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-26","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"87fa11ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-27","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-27","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"17bb8d9e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-28","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-28","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e020ec26","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-29","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-29","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c8f4117a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-30","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-30","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"34ca620a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-31","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-31","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"3893f59e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-32","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-32","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0626dc4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-33","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-33","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2769813e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-34","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-34","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"230599a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-35","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-35","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"60b08f72","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-36","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-36","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ddfb7b16","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-37","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-37","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f3d71d26","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-38","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-38","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"487b2dda","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-39","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-39","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"55d2981a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-40","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-40","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"859ad6ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-41","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-41","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2df9783a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-42","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-42","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4ae3be2a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-43","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-43","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"638501b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-44","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-44","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5495c5a6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-45","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-45","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"34d5d262","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-46","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-46","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4d46cf1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-47","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-47","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ac801f22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-48","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-48","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4964d092","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-49","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-49","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"457a31aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-50","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-50","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2c34912a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-51","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-51","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a0c574a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104994,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-52","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-52","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6a47a5aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-53","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-53","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9d5a860a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-54","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-54","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"41e77256","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-55","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-55","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"91e751b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-56","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-56","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d25af96e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-57","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-57","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a1f36aee","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-58","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-58","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"97a4b0aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-59","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-59","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6e2d0226","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-60","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-60","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d85f8e7a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-61","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-61","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"358553b6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-62","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-62","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"09f84f42","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-63","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-63","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f419e79e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-64","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-64","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ebd5ef3a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-65","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-65","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8d1b1e96","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-66","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-66","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2075ec02","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-67","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-67","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"99e8b452","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-68","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-68","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b078844a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-69","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-69","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"197c451e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-70","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-70","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2308cd2e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-71","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-71","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5a130186","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-72","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-72","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"815288be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-73","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-73","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"18a0df06","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-74","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-74","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6d7d27fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-75","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-75","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"08889e0e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-76","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-76","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"27598926","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-77","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-77","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ea971352","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-78","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-78","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"67bcf772","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-79","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-79","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0b65553a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-80","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-80","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"fe825fa6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-81","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-81","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d467a3ba","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-82","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-82","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b8bd355a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-83","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-83","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8950c30e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-84","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-84","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a7724ece","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-85","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-85","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7f82b14e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-86","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-86","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"fb914bfe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-87","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-87","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ce456f8a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104995,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-88","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-88","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8decb59e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-89","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-89","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"93c7c47a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-90","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-90","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7b31e09e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-91","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-91","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"eadbc8d2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-92","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-92","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"42b1a936","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-93","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-93","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"84c70daa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-94","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-94","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5f60640e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-95","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-95","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4cb8c566","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-96","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-96","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0c059ad2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-97","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-97","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"73fe6056","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-98","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-98","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7db321f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-99","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-99","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"13be596e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-100","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-100","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2eec70f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-101","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-101","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c1facde2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-102","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-102","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c8e82d3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-103","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-103","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"eb2cfd2e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-104","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-104","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"767d8b8a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-105","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-105","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2b16c2de","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-106","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-106","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0e487646","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-107","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-107","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"091b5b46","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-108","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-108","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f15941ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-109","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-109","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a9719692","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-110","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-110","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"3ed59c9a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-111","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-111","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b72dec12","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-112","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-112","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"11159802","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-113","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-113","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0e10621a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-114","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-114","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"46acc0aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-115","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-115","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"cb9018d2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-116","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-116","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"38ab9f92","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-117","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-117","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b4c4a942","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-118","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-118","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5da8f8fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-119","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-119","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"80c8d6ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-120","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-120","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2d7ed7d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-121","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-121","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"eef817fa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-122","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-122","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d5ac2abe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-123","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-123","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0ca206fe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-124","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-124","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"19b7fcf2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-125","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-125","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7f5d5f42","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-126","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-126","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7e02ef3e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-127","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-127","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"571d8762","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-128","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-128","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"af13318e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-129","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-129","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"da876af2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-130","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-130","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b18f73f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-131","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-131","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6775f69e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-132","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-132","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4e36575a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-133","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-133","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4c42b7ae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-134","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-134","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"62d361c6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-135","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-135","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"499778a6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-136","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-136","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0248c4ce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-137","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-137","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"81d1a616","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-138","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-138","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0f7915ca","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104996,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-139","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-139","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4ade6b4e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-140","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-140","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"44b6603e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-141","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-141","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a8a2371e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-142","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-142","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"786914f6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-143","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-143","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d5ac2abe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-144","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-144","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c8f3fbd6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-145","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-145","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"706dc962","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-146","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-146","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a725e766","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-147","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-147","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"062e33a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-148","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-148","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a294cf4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-149","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-149","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d048c262","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-150","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-150","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4f529faa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-151","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-151","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a7ca3b62","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-152","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-152","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b28861aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-153","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-153","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4b54ba96","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-154","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-154","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"dd9ad3aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-155","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-155","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7ec33d22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-156","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-156","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"3717dc0e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-157","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-157","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"47502d86","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-158","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-158","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6cdd694e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-159","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-159","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4d3630ee","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-160","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-160","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b2312af6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-161","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-161","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0d2abb82","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-162","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-162","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8a2982de","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-163","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-163","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"241494f2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-164","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-164","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"3f3a38da","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-165","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-165","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d490fa0a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-166","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-166","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4701ccce","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-167","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-167","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2a945da6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-168","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-168","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"45b318ba","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-169","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-169","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9f023bf6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-170","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-170","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"221de7be","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-171","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-171","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ba46f526","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-172","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-172","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"aa3ad44a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-173","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-173","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"30e028b2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-174","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-174","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c3f81512","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-175","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-175","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"eca568ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-176","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-176","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4c845036","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-177","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-177","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9ffccf5e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-178","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-178","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"426e333e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-179","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-179","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c7873366","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-180","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-180","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"722b3c22","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-181","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-181","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ddd70bc2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-182","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-182","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9357854a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104997,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-183","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-183","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"cfdb355a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-184","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-184","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c2f9d29a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-185","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-185","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"fe652186","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-186","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-186","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"658b29da","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-187","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-187","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"56676c36","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-188","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-188","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"69c4775a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-189","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-189","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"44baca52","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-190","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-190","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e7e5e1e6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-191","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-191","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"88423f12","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-192","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-192","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f1a379d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-193","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-193","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9d86f366","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-194","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-194","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7ff2abda","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-195","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-195","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"25a6df7a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-196","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-196","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"3188a0a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-197","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-197","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9efaa2e2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-198","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-198","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ea76f9fa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-199","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-199","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f2c78922","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-200","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-200","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5608cb0a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-201","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-201","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"55f22f32","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-202","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-202","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4f717f02","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-203","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-203","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"3ffb172e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-204","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-204","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"cd8ad6e2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-205","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-205","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"78a0dd7e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-206","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-206","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"fcd69956","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-207","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-207","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"b8bf1eb2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-208","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-208","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0f5e8916","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-209","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-209","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"061af972","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-210","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-210","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"d1abe582","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-211","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-211","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9254c6aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-212","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-212","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c119b292","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-213","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-213","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"09b910f2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-214","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-214","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5a227cf2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-215","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-215","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0d65b04e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-216","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-216","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e702e41a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-217","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-217","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6efca9fa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-218","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-218","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"058b0032","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-219","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-219","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ae222fae","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-220","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-220","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"2a37fc66","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-221","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-221","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a7134dbe","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-222","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-222","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"be792f52","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-223","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-223","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"c26fb7fa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-224","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-224","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ff27a97e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-225","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-225","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"a0a478d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-226","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-226","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7961b292","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-227","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-227","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"7ee2a6da","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-228","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-228","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4af7914e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-229","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-229","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"9d90c776","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-230","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-230","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"afa0b8a2","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104998,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-231","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-231","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"ed82e78e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-232","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-232","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"699440ea","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-233","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-233","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"737fa502","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-234","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-234","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f29c6e0a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-235","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-235","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"8e1a6b5e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-236","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-236","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"44ba6f36","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-237","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-237","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"6836a462","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-238","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-238","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"aadb4e26","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-239","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-239","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e0b716da","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-240","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-240","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"357c3efa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-241","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-241","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"5e1365d6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-242","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-242","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e59d5b8a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-243","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-243","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"626bc782","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-244","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-244","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"0c7a1db6","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-245","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-245","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"50e459aa","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-246","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-246","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"153af50e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-247","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-247","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"e62cba1e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-248","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-248","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"116a845e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-249","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-249","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"f417a396","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1600-250","url":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-250","startLine":0,"startColumn":0,"endLine":0,"endColumn":0,"executionContextId":1,"hash":"4699d03e","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425104999,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.156","timestamp":547787.044437,"encodedDataLength":448880,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425105000,"metadata":{"connectionId":1,"message":{"seq":3018,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/rgba.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/rgba.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105000,"metadata":{"connectionId":1,"message":{"seq":3019,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105000,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425105001,"metadata":{"connectionId":1,"message":{"seq":3020,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js","sourceReference":803728461}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105001,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105001,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/viewCursors/viewCursor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/viewCursors/viewCursor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts","sourceMapSources":["vs/editor/browser/viewParts/viewCursors/viewCursor.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105001,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105001,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/controller/oneCursor.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/controller/oneCursor.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/controller/oneCursor.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/controller/oneCursor.ts","sourceMapSources":["vs/editor/common/controller/oneCursor.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105002,"metadata":{"connectionId":1,"message":{"seq":3021,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursor.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105002,"metadata":{"connectionId":1,"message":{"seq":3022,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/controller/oneCursor.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/controller/oneCursor.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105002,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105002,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/codeActionMenu.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/codeActionMenu.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu.ts","sourceMapSources":["vs/editor/contrib/codeAction/codeActionMenu.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105002,"metadata":{"connectionId":1,"message":{"seq":3023,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js","sourceReference":491015521}}}},"level":0} {"tag":"dap.send","timestamp":1588425105003,"metadata":{"connectionId":1,"message":{"seq":3024,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105003,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105003,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewLayout/linesLayout.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewLayout/linesLayout.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/linesLayout.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewLayout/linesLayout.ts","sourceMapSources":["vs/editor/common/viewLayout/linesLayout.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105003,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105004,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105004,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/codeAction/lightBulbWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/codeAction/lightBulbWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/lightBulbWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/lightBulbWidget.ts","sourceMapSources":["vs/editor/contrib/codeAction/lightBulbWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105004,"metadata":{"connectionId":1,"message":{"seq":3025,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/linesLayout.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewLayout/linesLayout.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105004,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/insane/insane.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/insane/insane.js"},"level":0} {"tag":"dap.send","timestamp":1588425105004,"metadata":{"connectionId":1,"message":{"seq":3026,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/lightBulbWidget.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/codeAction/lightBulbWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105005,"metadata":{"connectionId":1,"message":{"seq":3027,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js","path":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js","sourceReference":2043363361}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105005,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js"},"level":0} {"tag":"dap.send","timestamp":1588425105006,"metadata":{"connectionId":1,"message":{"seq":3028,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/insane/insane.js","path":"/Users/roblou/code/vscode/out/vs/base/common/insane/insane.js","sourceReference":1666209339}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105006,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js"},"level":0} {"tag":"dap.send","timestamp":1588425105007,"metadata":{"connectionId":1,"message":{"seq":3029,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js","sourceReference":1070835938}}}},"level":0} {"tag":"dap.send","timestamp":1588425105007,"metadata":{"connectionId":1,"message":{"seq":3030,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js","sourceReference":113815173}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105007,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105007,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/contrib/gotoSymbol/peek/referencesTree.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/contrib/gotoSymbol/peek/referencesTree.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree.ts","sourceMapSources":["vs/editor/contrib/gotoSymbol/peek/referencesTree.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105007,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js","absolutePath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js"},"level":0} {"tag":"dap.send","timestamp":1588425105008,"metadata":{"connectionId":1,"message":{"seq":3031,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree.ts","path":"/Users/roblou/code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105008,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105008,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/abstractScrollbar.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/abstractScrollbar.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/abstractScrollbar.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105009,"metadata":{"connectionId":1,"message":{"seq":3032,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js","path":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js","sourceReference":975129759}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105009,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js"},"level":0} {"tag":"dap.send","timestamp":1588425105009,"metadata":{"connectionId":1,"message":{"seq":3033,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105009,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105009,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/scrollbarArrow.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarArrow.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/scrollbarArrow.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105010,"metadata":{"connectionId":1,"message":{"seq":3034,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105010,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105010,"message":"Creating source from source map","metadata":{"inputUrl":"vs/platform/userDataSync/common/content.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/platform/userDataSync/common/content.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/content.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/platform/userDataSync/common/content.ts","sourceMapSources":["vs/platform/userDataSync/common/content.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105010,"metadata":{"connectionId":1,"message":{"seq":3035,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js","sourceReference":1960245693}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105010,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js"},"level":0} {"tag":"dap.send","timestamp":1588425105011,"metadata":{"connectionId":1,"message":{"seq":3036,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/content.ts","path":"/Users/roblou/code/vscode/src/vs/platform/userDataSync/common/content.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105011,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425105012,"metadata":{"connectionId":1,"message":{"seq":3037,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js","sourceReference":928322023}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105012,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105012,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/breadcrumbs.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbs.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.ts","sourceMapSources":["vs/workbench/browser/parts/editor/breadcrumbs.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105012,"metadata":{"connectionId":1,"message":{"seq":3038,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js","sourceReference":2023057935}}}},"level":0} {"tag":"dap.send","timestamp":1588425105013,"metadata":{"connectionId":1,"message":{"seq":3039,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105013,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105014,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105014,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/scrollbarState.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarState.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarState.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarState.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/scrollbarState.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105014,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js"},"level":0} {"tag":"dap.send","timestamp":1588425105014,"metadata":{"connectionId":1,"message":{"seq":3040,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarState.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarState.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105014,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105014,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts","sourceMapSources":["vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105015,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js"},"level":0} {"tag":"dap.send","timestamp":1588425105015,"metadata":{"connectionId":1,"message":{"seq":3041,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js","sourceReference":941412818}}}},"level":0} {"tag":"dap.send","timestamp":1588425105015,"metadata":{"connectionId":1,"message":{"seq":3042,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js","sourceReference":1297187591}}}},"level":0} {"tag":"dap.send","timestamp":1588425105015,"metadata":{"connectionId":1,"message":{"seq":3043,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105015,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425105016,"metadata":{"connectionId":1,"message":{"seq":3044,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js","path":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js","sourceReference":1665802939}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105017,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105017,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/comments/browser/reactionsAction.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/comments/browser/reactionsAction.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.ts","sourceMapSources":["vs/workbench/contrib/comments/browser/reactionsAction.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105017,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105017,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/breadcrumbsModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel.ts","sourceMapSources":["vs/workbench/browser/parts/editor/breadcrumbsModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105017,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425105018,"metadata":{"connectionId":1,"message":{"seq":3045,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js","sourceReference":1775956857}}}},"level":0} {"tag":"dap.send","timestamp":1588425105019,"metadata":{"connectionId":1,"message":{"seq":3046,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105019,"metadata":{"connectionId":1,"message":{"seq":3047,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105019,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105019,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/browser/parts/editor/breadcrumbsPicker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/breadcrumbsPicker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts","sourceMapSources":["vs/workbench/browser/parts/editor/breadcrumbsPicker.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105019,"metadata":{"connectionId":1,"message":{"seq":3048,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js","sourceReference":499821546}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105020,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js"},"level":0} {"tag":"dap.send","timestamp":1588425105020,"metadata":{"connectionId":1,"message":{"seq":3049,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105020,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105020,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105021,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js"},"level":0} {"tag":"dap.send","timestamp":1588425105021,"metadata":{"connectionId":1,"message":{"seq":3050,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalProtocolLinkProvider.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105021,"metadata":{"connectionId":1,"message":{"seq":3051,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js","sourceReference":2107025282}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105021,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105022,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105022,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105022,"metadata":{"connectionId":1,"message":{"seq":3052,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105023,"metadata":{"connectionId":1,"message":{"seq":3053,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js","sourceReference":237762863}}}},"level":0} {"tag":"dap.send","timestamp":1588425105023,"metadata":{"connectionId":1,"message":{"seq":3054,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js","sourceReference":346243266}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105023,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105023,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts"]},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105023,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105023,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105024,"metadata":{"connectionId":1,"message":{"seq":3055,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105024,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105024,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105025,"metadata":{"connectionId":1,"message":{"seq":3056,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105025,"metadata":{"connectionId":1,"message":{"seq":3057,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105028,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105029,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105029,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/widgets/widgets.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgets.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgets.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/widgets/widgets.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105029,"metadata":{"connectionId":1,"message":{"seq":3058,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/widgets.js","sourceReference":647256767}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105029,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js"},"level":0} {"tag":"dap.send","timestamp":1588425105030,"metadata":{"connectionId":1,"message":{"seq":3059,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgets.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/widgets.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105030,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js"},"level":0} {"tag":"dap.send","timestamp":1588425105031,"metadata":{"connectionId":1,"message":{"seq":3060,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js","sourceReference":1892014874}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105031,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105031,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/widgets/hoverWidget.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/widgets/hoverWidget.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105031,"metadata":{"connectionId":1,"message":{"seq":3061,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/widgets/hoverWidget.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105031,"metadata":{"connectionId":1,"message":{"seq":3062,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js","sourceReference":343114997}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105031,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105032,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105032,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/environmentVariableInfo.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/environmentVariableInfo.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105032,"metadata":{"connectionId":1,"message":{"seq":3063,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105032,"metadata":{"connectionId":1,"message":{"seq":3064,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","sourceReference":1537197183}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105032,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105033,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105033,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/minimap/minimapCharRenderer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRenderer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRenderer.ts","sourceMapSources":["vs/editor/browser/viewParts/minimap/minimapCharRenderer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105034,"metadata":{"connectionId":1,"message":{"seq":3065,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRenderer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRenderer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105034,"metadata":{"connectionId":1,"message":{"seq":3066,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","sourceReference":718243695}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105034,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105035,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105035,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/minimap/minimapCharSheet.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapCharSheet.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet.ts","sourceMapSources":["vs/editor/browser/viewParts/minimap/minimapCharSheet.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105035,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js"},"level":0} {"tag":"dap.send","timestamp":1588425105036,"metadata":{"connectionId":1,"message":{"seq":3067,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105036,"metadata":{"connectionId":1,"message":{"seq":3068,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js","sourceReference":1300871302}}}},"level":0} {"tag":"dap.send","timestamp":1588425105036,"metadata":{"connectionId":1,"message":{"seq":3069,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","path":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","sourceReference":469527334}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105036,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105037,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105037,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105037,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/lines/rangeUtil.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/lines/rangeUtil.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/rangeUtil.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/rangeUtil.ts","sourceMapSources":["vs/editor/browser/viewParts/lines/rangeUtil.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105037,"metadata":{"connectionId":1,"message":{"seq":3070,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","path":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","sourceReference":354876619}}}},"level":0} {"tag":"dap.send","timestamp":1588425105037,"metadata":{"connectionId":1,"message":{"seq":3071,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js","sourceReference":921062323}}}},"level":0} {"tag":"dap.send","timestamp":1588425105038,"metadata":{"connectionId":1,"message":{"seq":3072,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/rangeUtil.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/lines/rangeUtil.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105038,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105038,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/browser/viewParts/minimap/minimapPreBaked.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/browser/viewParts/minimap/minimapPreBaked.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapPreBaked.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapPreBaked.ts","sourceMapSources":["vs/editor/browser/viewParts/minimap/minimapPreBaked.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105038,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js","absolutePath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js"},"level":0} {"tag":"dap.send","timestamp":1588425105039,"metadata":{"connectionId":1,"message":{"seq":3073,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapPreBaked.ts","path":"/Users/roblou/code/vscode/src/vs/editor/browser/viewParts/minimap/minimapPreBaked.ts","sourceReference":0}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105039,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105039,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts","sourceMapSources":["vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105040,"metadata":{"connectionId":1,"message":{"seq":3074,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js","sourceReference":761681638}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105041,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/spdlog/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/spdlog/index.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105042,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105042,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105042,"metadata":{"connectionId":1,"message":{"seq":3075,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105043,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/mkdirp/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/mkdirp/index.js"},"level":0} {"tag":"dap.send","timestamp":1588425105044,"metadata":{"connectionId":1,"message":{"seq":3076,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105044,"metadata":{"connectionId":1,"message":{"seq":3077,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/spdlog/index.js","path":"/Users/roblou/code/vscode/node_modules/spdlog/index.js","sourceReference":1519681817}}}},"level":0} {"tag":"dap.send","timestamp":1588425105044,"metadata":{"connectionId":1,"message":{"seq":3078,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/mkdirp/index.js","path":"/Users/roblou/code/vscode/node_modules/mkdirp/index.js","sourceReference":3728937}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105044,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/spdlog/node_modules/bindings/bindings.js","absolutePath":"/Users/roblou/code/vscode/node_modules/spdlog/node_modules/bindings/bindings.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105045,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105045,"message":"Creating source from source map","metadata":{"inputUrl":"vs/workbench/contrib/terminal/browser/links/terminalLink.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/workbench/contrib/terminal/browser/links/terminalLink.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts","sourceMapSources":["vs/workbench/contrib/terminal/browser/links/terminalLink.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105046,"metadata":{"connectionId":1,"message":{"seq":3079,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105047,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/file-uri-to-path/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/file-uri-to-path/index.js"},"level":0} {"tag":"dap.send","timestamp":1588425105047,"metadata":{"connectionId":1,"message":{"seq":3080,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/spdlog/node_modules/bindings/bindings.js","path":"/Users/roblou/code/vscode/node_modules/spdlog/node_modules/bindings/bindings.js","sourceReference":759676975}}}},"level":0} {"tag":"dap.send","timestamp":1588425105047,"metadata":{"connectionId":1,"message":{"seq":3081,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/file-uri-to-path/index.js","path":"/Users/roblou/code/vscode/node_modules/file-uri-to-path/index.js","sourceReference":1326062653}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105049,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/vscode-sqlite3/lib/sqlite3.js","absolutePath":"/Users/roblou/code/vscode/node_modules/vscode-sqlite3/lib/sqlite3.js"},"level":0} {"tag":"dap.send","timestamp":1588425105051,"metadata":{"connectionId":1,"message":{"seq":3082,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/vscode-sqlite3/lib/sqlite3.js","path":"/Users/roblou/code/vscode/node_modules/vscode-sqlite3/lib/sqlite3.js","sourceReference":1637944579}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105052,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/original-fs/streams.js"},"level":0} {"tag":"dap.send","timestamp":1588425105052,"metadata":{"connectionId":1,"message":{"seq":3083,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/original-fs/streams.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/original-fs/streams.js","sourceReference":1806413999}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105054,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/watchers.js"},"level":0} {"tag":"dap.send","timestamp":1588425105054,"metadata":{"connectionId":1,"message":{"seq":3084,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/watchers.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/fs/watchers.js","sourceReference":499842625}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105064,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/cluster.js"},"level":0} {"tag":"dap.send","timestamp":1588425105065,"metadata":{"connectionId":1,"message":{"seq":3085,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/cluster.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/cluster.js","sourceReference":1782677156}}}},"level":0} {"tag":"dap.send","timestamp":1588425105071,"metadata":{"connectionId":1,"message":{"seq":3086,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mdebugger listening on port 5870\u001b[0m\n","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","sourceReference":0},"line":308,"column":14}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105072,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/index.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/index.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105074,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/master.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105074,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/internal.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/internal.js"},"level":0} {"tag":"dap.send","timestamp":1588425105075,"metadata":{"connectionId":1,"message":{"seq":3087,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/index.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/index.js","sourceReference":1610737489}}}},"level":0} {"tag":"dap.send","timestamp":1588425105075,"metadata":{"connectionId":1,"message":{"seq":3088,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/master.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/master.js","sourceReference":1187308711}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105076,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf32.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf32.js"},"level":0} {"tag":"dap.send","timestamp":1588425105076,"metadata":{"connectionId":1,"message":{"seq":3089,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/internal.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/internal.js","sourceReference":682695984}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105077,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf16.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf16.js"},"level":0} {"tag":"dap.send","timestamp":1588425105077,"metadata":{"connectionId":1,"message":{"seq":3090,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf32.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf32.js","sourceReference":764167936}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105077,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/round_robin_handle.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105078,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf7.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf7.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105080,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-codec.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-codec.js"},"level":0} {"tag":"dap.send","timestamp":1588425105080,"metadata":{"connectionId":1,"message":{"seq":3091,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf16.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf16.js","sourceReference":223717341}}}},"level":0} {"tag":"dap.send","timestamp":1588425105081,"metadata":{"connectionId":1,"message":{"seq":3092,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/round_robin_handle.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/round_robin_handle.js","sourceReference":230678048}}}},"level":0} {"tag":"dap.send","timestamp":1588425105081,"metadata":{"connectionId":1,"message":{"seq":3093,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf7.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/utf7.js","sourceReference":1992400869}}}},"level":0} {"tag":"dap.send","timestamp":1588425105081,"metadata":{"connectionId":1,"message":{"seq":3094,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-codec.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-codec.js","sourceReference":291108623}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105082,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105082,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data-generated.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data-generated.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105083,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/utils.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105083,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-codec.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-codec.js"},"level":0} {"tag":"dap.send","timestamp":1588425105083,"metadata":{"connectionId":1,"message":{"seq":3095,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data.js","sourceReference":2051136655}}}},"level":0} {"tag":"dap.send","timestamp":1588425105083,"metadata":{"connectionId":1,"message":{"seq":3096,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data-generated.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/sbcs-data-generated.js","sourceReference":867419629}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105084,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-data.js","absolutePath":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-data.js"},"level":0} {"tag":"dap.send","timestamp":1588425105084,"metadata":{"connectionId":1,"message":{"seq":3097,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/utils.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/utils.js","sourceReference":1915351066}}}},"level":0} {"tag":"dap.send","timestamp":1588425105085,"metadata":{"connectionId":1,"message":{"seq":3098,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-codec.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-codec.js","sourceReference":1210148186}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105085,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/shared_handle.js"},"level":0} {"tag":"dap.send","timestamp":1588425105085,"metadata":{"connectionId":1,"message":{"seq":3099,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-data.js","path":"/Users/roblou/code/vscode/node_modules/iconv-lite/encodings/dbcs-data.js","sourceReference":1497288197}}}},"level":0} {"tag":"dap.send","timestamp":1588425105086,"metadata":{"connectionId":1,"message":{"seq":3100,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/shared_handle.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/shared_handle.js","sourceReference":574326451}}}},"level":0} {"tag":"cdp.send","timestamp":1588425105086,"metadata":{"connectionId":0,"message":{"id":22,"method":"Target.setAutoAttach","params":{"autoAttach":true,"waitForDebuggerOnStart":true,"flatten":true},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.send","timestamp":1588425105086,"metadata":{"connectionId":0,"message":{"id":23,"method":"Network.setCacheDisabled","params":{"cacheDisabled":true},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105087,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/worker.js"},"level":0} {"tag":"cdp.receive","timestamp":1588425105088,"metadata":{"connectionId":0,"message":{"id":22,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105088,"metadata":{"connectionId":0,"message":{"id":23,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"dap.send","timestamp":1588425105088,"metadata":{"connectionId":1,"message":{"seq":3101,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/worker.js","path":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/internal/cluster/worker.js","sourceReference":237006390}}}},"level":0} {"tag":"dap.send","timestamp":1588425105098,"metadata":{"connectionId":1,"message":{"seq":3102,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mdebugger inspector at chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:5870/497d32f9-1a8f-4560-affa-4d9ab3df3a1f\u001b[0m\n","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts","sourceReference":0},"line":204,"column":16}}},"level":0} {"tag":"dap.send","timestamp":1588425105110,"metadata":{"connectionId":1,"message":{"seq":3103,"type":"event","event":"output","body":{"category":"console","output":"Extension 'vscode.notebook-test' uses PROPOSED API which is subject to change and removal without notice.\n","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","sourceReference":0},"line":490,"column":13}}},"level":0} {"tag":"dap.send","timestamp":1588425105112,"metadata":{"connectionId":1,"message":{"seq":3104,"type":"event","event":"output","body":{"category":"console","output":"Extension 'vscode.notebook-regexper' uses PROPOSED API which is subject to change and removal without notice.\n","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","sourceReference":0},"line":490,"column":13}}},"level":0} {"tag":"dap.send","timestamp":1588425105112,"metadata":{"connectionId":1,"message":{"seq":3105,"type":"event","event":"output","body":{"category":"console","output":"Extension 'vscode.notebook-renderers' uses PROPOSED API which is subject to change and removal without notice.\n","source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts","sourceReference":0},"line":490,"column":13}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105121,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/vscode-textmate/release/main.js","absolutePath":"/Users/roblou/code/vscode/node_modules/vscode-textmate/release/main.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105122,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/main.js","absolutePath":"/Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/main.js"},"level":0} {"tag":"dap.send","timestamp":1588425105127,"metadata":{"connectionId":1,"message":{"seq":3106,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/vscode-textmate/release/main.js","path":"/Users/roblou/code/vscode/node_modules/vscode-textmate/release/main.js","sourceReference":1290725042}}}},"level":0} {"tag":"dap.send","timestamp":1588425105135,"metadata":{"connectionId":1,"message":{"seq":3107,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/main.js","path":"/Users/roblou/code/vscode/node_modules/vscode-oniguruma/release/main.js","sourceReference":1507667989}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105135,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-5"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105137,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-6"},"level":0} {"tag":"dap.send","timestamp":1588425105138,"metadata":{"connectionId":1,"message":{"seq":3108,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-5","path":"wasm/wasm-001b65c2/wasm-001b65c2-5","sourceReference":411118236}}}},"level":0} {"tag":"dap.send","timestamp":1588425105138,"metadata":{"connectionId":1,"message":{"seq":3109,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-6","path":"wasm/wasm-001b65c2/wasm-001b65c2-6","sourceReference":746884977}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105138,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-7"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105139,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-8"},"level":0} {"tag":"dap.send","timestamp":1588425105140,"metadata":{"connectionId":1,"message":{"seq":3110,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-7","path":"wasm/wasm-001b65c2/wasm-001b65c2-7","sourceReference":386811256}}}},"level":0} {"tag":"dap.send","timestamp":1588425105140,"metadata":{"connectionId":1,"message":{"seq":3111,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-8","path":"wasm/wasm-001b65c2/wasm-001b65c2-8","sourceReference":563313293}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105140,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-9"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105141,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-10"},"level":0} {"tag":"dap.send","timestamp":1588425105141,"metadata":{"connectionId":1,"message":{"seq":3112,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-9","path":"wasm/wasm-001b65c2/wasm-001b65c2-9","sourceReference":1847663187}}}},"level":0} {"tag":"dap.send","timestamp":1588425105141,"metadata":{"connectionId":1,"message":{"seq":3113,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-10","path":"wasm/wasm-001b65c2/wasm-001b65c2-10","sourceReference":1249724776}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105142,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-11"},"level":0} {"tag":"dap.send","timestamp":1588425105142,"metadata":{"connectionId":1,"message":{"seq":3114,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-11","path":"wasm/wasm-001b65c2/wasm-001b65c2-11","sourceReference":327171376}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105143,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-12"},"level":0} {"tag":"dap.send","timestamp":1588425105143,"metadata":{"connectionId":1,"message":{"seq":3115,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-12","path":"wasm/wasm-001b65c2/wasm-001b65c2-12","sourceReference":1119103417}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105143,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-13"},"level":0} {"tag":"dap.send","timestamp":1588425105144,"metadata":{"connectionId":1,"message":{"seq":3116,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-13","path":"wasm/wasm-001b65c2/wasm-001b65c2-13","sourceReference":1918295757}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105144,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-14"},"level":0} {"tag":"dap.send","timestamp":1588425105145,"metadata":{"connectionId":1,"message":{"seq":3117,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-14","path":"wasm/wasm-001b65c2/wasm-001b65c2-14","sourceReference":996532628}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105145,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-15"},"level":0} {"tag":"dap.send","timestamp":1588425105146,"metadata":{"connectionId":1,"message":{"seq":3118,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-15","path":"wasm/wasm-001b65c2/wasm-001b65c2-15","sourceReference":1480912515}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105146,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-16"},"level":0} {"tag":"dap.send","timestamp":1588425105163,"metadata":{"connectionId":1,"message":{"seq":3119,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-16","path":"wasm/wasm-001b65c2/wasm-001b65c2-16","sourceReference":565567187}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105192,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-17"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105194,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-18"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105194,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-19"},"level":0} {"tag":"dap.send","timestamp":1588425105194,"metadata":{"connectionId":1,"message":{"seq":3120,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-17","path":"wasm/wasm-001b65c2/wasm-001b65c2-17","sourceReference":877210143}}}},"level":0} {"tag":"dap.send","timestamp":1588425105195,"metadata":{"connectionId":1,"message":{"seq":3121,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-18","path":"wasm/wasm-001b65c2/wasm-001b65c2-18","sourceReference":867751358}}}},"level":0} {"tag":"dap.send","timestamp":1588425105195,"metadata":{"connectionId":1,"message":{"seq":3122,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-19","path":"wasm/wasm-001b65c2/wasm-001b65c2-19","sourceReference":1606231027}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105196,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-20"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105198,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-21"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105198,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-22"},"level":0} {"tag":"dap.send","timestamp":1588425105199,"metadata":{"connectionId":1,"message":{"seq":3123,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-20","path":"wasm/wasm-001b65c2/wasm-001b65c2-20","sourceReference":6273875}}}},"level":0} {"tag":"dap.send","timestamp":1588425105199,"metadata":{"connectionId":1,"message":{"seq":3124,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-21","path":"wasm/wasm-001b65c2/wasm-001b65c2-21","sourceReference":1814164052}}}},"level":0} {"tag":"dap.send","timestamp":1588425105199,"metadata":{"connectionId":1,"message":{"seq":3125,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-22","path":"wasm/wasm-001b65c2/wasm-001b65c2-22","sourceReference":321664395}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105199,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-23"},"level":0} {"tag":"dap.send","timestamp":1588425105200,"metadata":{"connectionId":1,"message":{"seq":3126,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-23","path":"wasm/wasm-001b65c2/wasm-001b65c2-23","sourceReference":890358240}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105200,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-24"},"level":0} {"tag":"dap.send","timestamp":1588425105201,"metadata":{"connectionId":1,"message":{"seq":3127,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-24","path":"wasm/wasm-001b65c2/wasm-001b65c2-24","sourceReference":977578774}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105201,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-25"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105204,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-26"},"level":0} {"tag":"dap.send","timestamp":1588425105204,"metadata":{"connectionId":1,"message":{"seq":3128,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-25","path":"wasm/wasm-001b65c2/wasm-001b65c2-25","sourceReference":909781470}}}},"level":0} {"tag":"dap.send","timestamp":1588425105204,"metadata":{"connectionId":1,"message":{"seq":3129,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-26","path":"wasm/wasm-001b65c2/wasm-001b65c2-26","sourceReference":1635694487}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105205,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-27"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105206,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-28"},"level":0} {"tag":"dap.send","timestamp":1588425105206,"metadata":{"connectionId":1,"message":{"seq":3130,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-27","path":"wasm/wasm-001b65c2/wasm-001b65c2-27","sourceReference":1088842495}}}},"level":0} {"tag":"dap.send","timestamp":1588425105206,"metadata":{"connectionId":1,"message":{"seq":3131,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-28","path":"wasm/wasm-001b65c2/wasm-001b65c2-28","sourceReference":716871932}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105207,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-29"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105208,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-30"},"level":0} {"tag":"dap.send","timestamp":1588425105209,"metadata":{"connectionId":1,"message":{"seq":3132,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-29","path":"wasm/wasm-001b65c2/wasm-001b65c2-29","sourceReference":1420040946}}}},"level":0} {"tag":"dap.send","timestamp":1588425105209,"metadata":{"connectionId":1,"message":{"seq":3133,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-30","path":"wasm/wasm-001b65c2/wasm-001b65c2-30","sourceReference":1656346879}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105210,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-31"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105211,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-32"},"level":0} {"tag":"dap.send","timestamp":1588425105211,"metadata":{"connectionId":1,"message":{"seq":3134,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-31","path":"wasm/wasm-001b65c2/wasm-001b65c2-31","sourceReference":389459960}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105211,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-33"},"level":0} {"tag":"dap.send","timestamp":1588425105212,"metadata":{"connectionId":1,"message":{"seq":3135,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-32","path":"wasm/wasm-001b65c2/wasm-001b65c2-32","sourceReference":384575088}}}},"level":0} {"tag":"dap.send","timestamp":1588425105212,"metadata":{"connectionId":1,"message":{"seq":3136,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-33","path":"wasm/wasm-001b65c2/wasm-001b65c2-33","sourceReference":1834949080}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105212,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-34"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105213,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-35"},"level":0} {"tag":"dap.send","timestamp":1588425105213,"metadata":{"connectionId":1,"message":{"seq":3137,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-34","path":"wasm/wasm-001b65c2/wasm-001b65c2-34","sourceReference":2124796421}}}},"level":0} {"tag":"dap.send","timestamp":1588425105213,"metadata":{"connectionId":1,"message":{"seq":3138,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-35","path":"wasm/wasm-001b65c2/wasm-001b65c2-35","sourceReference":1075504873}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105213,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-36"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105214,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-37"},"level":0} {"tag":"dap.send","timestamp":1588425105214,"metadata":{"connectionId":1,"message":{"seq":3139,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-36","path":"wasm/wasm-001b65c2/wasm-001b65c2-36","sourceReference":198051756}}}},"level":0} {"tag":"dap.send","timestamp":1588425105215,"metadata":{"connectionId":1,"message":{"seq":3140,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-37","path":"wasm/wasm-001b65c2/wasm-001b65c2-37","sourceReference":961107212}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105223,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-38"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105223,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-39"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105224,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-40"},"level":0} {"tag":"dap.send","timestamp":1588425105224,"metadata":{"connectionId":1,"message":{"seq":3141,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-38","path":"wasm/wasm-001b65c2/wasm-001b65c2-38","sourceReference":65845924}}}},"level":0} {"tag":"dap.send","timestamp":1588425105224,"metadata":{"connectionId":1,"message":{"seq":3142,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-39","path":"wasm/wasm-001b65c2/wasm-001b65c2-39","sourceReference":1478873238}}}},"level":0} {"tag":"dap.send","timestamp":1588425105225,"metadata":{"connectionId":1,"message":{"seq":3143,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-40","path":"wasm/wasm-001b65c2/wasm-001b65c2-40","sourceReference":1734445462}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105226,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-41"},"level":0} {"tag":"cdp.send","timestamp":1588425105228,"metadata":{"connectionId":0,"message":{"id":24,"method":"Runtime.enable","params":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.send","timestamp":1588425105228,"metadata":{"connectionId":0,"message":{"id":25,"method":"Network.enable","params":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.send","timestamp":1588425105228,"metadata":{"connectionId":0,"message":{"id":26,"method":"Debugger.enable","params":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.send","timestamp":1588425105228,"metadata":{"connectionId":0,"message":{"id":27,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":32},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.send","timestamp":1588425105229,"metadata":{"connectionId":0,"message":{"id":28,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.send","timestamp":1588425105229,"metadata":{"connectionId":0,"message":{"id":29,"method":"Debugger.setInstrumentationBreakpoint","params":{"instrumentation":"beforeScriptWithSourceMapExecution"},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105229,"message":"Dequeue messages","metadata":{"message":[]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105229,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-42"},"level":0} {"tag":"dap.send","timestamp":1588425105230,"metadata":{"connectionId":1,"message":{"seq":3144,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-41","path":"wasm/wasm-001b65c2/wasm-001b65c2-41","sourceReference":132145624}}}},"level":0} {"tag":"dap.send","timestamp":1588425105230,"metadata":{"connectionId":1,"message":{"seq":3145,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-42","path":"wasm/wasm-001b65c2/wasm-001b65c2-42","sourceReference":2066667540}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","name":"editorWorkerService"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"id":24,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"id":25,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"id":26,"result":{"debuggerId":"(4327E224142911E3D61B94FD12966F94)"},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"id":27,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"id":28,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105230,"metadata":{"connectionId":0,"message":{"id":29,"result":{"breakpointId":"8:beforeScriptWithSourceMapExecution"},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105230,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-43"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105231,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-44"},"level":0} {"tag":"dap.send","timestamp":1588425105231,"metadata":{"connectionId":1,"message":{"seq":3146,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-43","path":"wasm/wasm-001b65c2/wasm-001b65c2-43","sourceReference":161170831}}}},"level":0} {"tag":"dap.receive","timestamp":1588425105232,"metadata":{"connectionId":2,"message":{"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code - Insiders","adapterID":"pwa-chrome","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true},"type":"request","seq":1}},"level":0} {"tag":"dap.send","timestamp":1588425105232,"metadata":{"connectionId":2,"message":{"seq":1,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsConfigurationDoneRequest":true,"supportsFunctionBreakpoints":false,"supportsConditionalBreakpoints":true,"supportsHitConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"exceptionBreakpointFilters":[{"filter":"caught","label":"Caught Exceptions","default":false},{"filter":"uncaught","label":"Uncaught Exceptions","default":false}],"supportsStepBack":false,"supportsSetVariable":true,"supportsRestartFrame":true,"supportsGotoTargetsRequest":false,"supportsStepInTargetsRequest":false,"supportsCompletionsRequest":true,"supportsModulesRequest":false,"additionalModuleColumns":[],"supportedChecksumAlgorithms":[],"supportsRestartRequest":true,"supportsExceptionOptions":false,"supportsValueFormattingOptions":true,"supportsExceptionInfoRequest":true,"supportTerminateDebuggee":false,"supportsDelayedStackTraceLoading":true,"supportsLoadedSourcesRequest":true,"supportsLogPoints":true,"supportsTerminateThreadsRequest":false,"supportsSetExpression":false,"supportsTerminateRequest":false,"completionTriggerCharacters":[".","[","\"","'"],"supportsBreakpointLocationsRequest":true,"supportsClipboardContext":true}}},"level":0} {"tag":"dap.send","timestamp":1588425105232,"metadata":{"connectionId":2,"message":{"seq":2,"type":"event","event":"initialized","body":{}}},"level":0} {"tag":"dap.send","timestamp":1588425105232,"metadata":{"connectionId":2,"message":{"seq":3,"type":"event","event":"thread","body":{"reason":"started","threadId":1}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105232,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-45"},"level":0} {"tag":"dap.send","timestamp":1588425105233,"metadata":{"connectionId":1,"message":{"seq":3147,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-44","path":"wasm/wasm-001b65c2/wasm-001b65c2-44","sourceReference":1744545207}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105234,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-46"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105235,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-47"},"level":0} {"tag":"dap.send","timestamp":1588425105235,"metadata":{"connectionId":1,"message":{"seq":3148,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-45","path":"wasm/wasm-001b65c2/wasm-001b65c2-45","sourceReference":441567797}}}},"level":0} {"tag":"dap.send","timestamp":1588425105235,"metadata":{"connectionId":1,"message":{"seq":3149,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-46","path":"wasm/wasm-001b65c2/wasm-001b65c2-46","sourceReference":976570726}}}},"level":0} {"tag":"dap.send","timestamp":1588425105235,"metadata":{"connectionId":1,"message":{"seq":3150,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-47","path":"wasm/wasm-001b65c2/wasm-001b65c2-47","sourceReference":194327915}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105236,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-48"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105236,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-49"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105237,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-50"},"level":0} {"tag":"dap.send","timestamp":1588425105237,"metadata":{"connectionId":1,"message":{"seq":3151,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-48","path":"wasm/wasm-001b65c2/wasm-001b65c2-48","sourceReference":843988205}}}},"level":0} {"tag":"dap.send","timestamp":1588425105237,"metadata":{"connectionId":1,"message":{"seq":3152,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-49","path":"wasm/wasm-001b65c2/wasm-001b65c2-49","sourceReference":380107572}}}},"level":0} {"tag":"dap.send","timestamp":1588425105237,"metadata":{"connectionId":1,"message":{"seq":3153,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-50","path":"wasm/wasm-001b65c2/wasm-001b65c2-50","sourceReference":716289731}}}},"level":0} {"tag":"cdp.send","timestamp":1588425105237,"metadata":{"connectionId":0,"message":{"id":30,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"8:beforeScriptWithSourceMapExecution"},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105240,"metadata":{"connectionId":0,"message":{"id":30,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105240,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-51"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105242,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-52"},"level":0} {"tag":"dap.receive","timestamp":1588425105242,"metadata":{"connectionId":2,"message":{"command":"launch","arguments":{"type":"pwa-chrome","name":"workerMain.js#editorWorkerService","request":"launch","__pendingTargetId":"31CEB9F1109E100C9FF4745BCF1467E4","__sessionId":"5c0386e1-0438-46bd-9e8c-9f87a3d2bfab"},"type":"request","seq":2}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105243,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-53"},"level":0} {"tag":"dap.send","timestamp":1588425105244,"metadata":{"connectionId":1,"message":{"seq":3154,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-51","path":"wasm/wasm-001b65c2/wasm-001b65c2-51","sourceReference":956900337}}}},"level":0} {"tag":"dap.send","timestamp":1588425105244,"metadata":{"connectionId":1,"message":{"seq":3155,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-52","path":"wasm/wasm-001b65c2/wasm-001b65c2-52","sourceReference":1079385518}}}},"level":0} {"tag":"dap.send","timestamp":1588425105244,"metadata":{"connectionId":1,"message":{"seq":3156,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-53","path":"wasm/wasm-001b65c2/wasm-001b65c2-53","sourceReference":495814913}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105244,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-54"},"level":0} {"tag":"dap.receive","timestamp":1588425105244,"metadata":{"connectionId":2,"message":{"command":"setExceptionBreakpoints","arguments":{"filters":[]},"type":"request","seq":3}},"level":0} {"tag":"cdp.send","timestamp":1588425105245,"metadata":{"connectionId":0,"message":{"id":31,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105246,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-55"},"level":0} {"tag":"dap.send","timestamp":1588425105246,"metadata":{"connectionId":1,"message":{"seq":3157,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-54","path":"wasm/wasm-001b65c2/wasm-001b65c2-54","sourceReference":1281736158}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425105246,"metadata":{"connectionId":0,"message":{"id":31,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"dap.send","timestamp":1588425105246,"metadata":{"connectionId":1,"message":{"seq":3158,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-55","path":"wasm/wasm-001b65c2/wasm-001b65c2-55","sourceReference":1934218306}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105247,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-56"},"level":0} {"tag":"dap.send","timestamp":1588425105247,"metadata":{"connectionId":2,"message":{"seq":4,"type":"response","request_seq":3,"command":"setExceptionBreakpoints","success":true,"body":{}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105247,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-57"},"level":0} {"tag":"dap.send","timestamp":1588425105248,"metadata":{"connectionId":1,"message":{"seq":3159,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-56","path":"wasm/wasm-001b65c2/wasm-001b65c2-56","sourceReference":405772097}}}},"level":0} {"tag":"dap.send","timestamp":1588425105248,"metadata":{"connectionId":1,"message":{"seq":3160,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-57","path":"wasm/wasm-001b65c2/wasm-001b65c2-57","sourceReference":1744069649}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105248,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-58"},"level":0} {"tag":"dap.send","timestamp":1588425105249,"metadata":{"connectionId":1,"message":{"seq":3161,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-58","path":"wasm/wasm-001b65c2/wasm-001b65c2-58","sourceReference":700446142}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105249,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-59"},"level":0} {"tag":"dap.send","timestamp":1588425105249,"metadata":{"connectionId":1,"message":{"seq":3162,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-59","path":"wasm/wasm-001b65c2/wasm-001b65c2-59","sourceReference":468434594}}}},"level":0} {"tag":"dap.receive","timestamp":1588425105250,"metadata":{"connectionId":2,"message":{"command":"configurationDone","type":"request","seq":4}},"level":0} {"tag":"dap.send","timestamp":1588425105250,"metadata":{"connectionId":2,"message":{"seq":5,"type":"response","request_seq":4,"command":"configurationDone","success":true,"body":{}}},"level":0} {"tag":"perf.function","timestamp":1588425105250,"message":"","metadata":{"method":"BreakpointManager.launchBlocker","duration":0},"level":0} {"tag":"cdp.send","timestamp":1588425105250,"metadata":{"connectionId":0,"message":{"id":32,"method":"Runtime.runIfWaitingForDebugger","params":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"dap.send","timestamp":1588425105252,"metadata":{"connectionId":2,"message":{"seq":6,"type":"response","request_seq":2,"command":"launch","success":true,"body":{}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105255,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-60"},"level":0} {"tag":"cdp.receive","timestamp":1588425105256,"metadata":{"connectionId":0,"message":{"id":32,"result":{},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105257,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-61"},"level":0} {"tag":"dap.send","timestamp":1588425105259,"metadata":{"connectionId":1,"message":{"seq":3163,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-60","path":"wasm/wasm-001b65c2/wasm-001b65c2-60","sourceReference":824269842}}}},"level":0} {"tag":"dap.send","timestamp":1588425105260,"metadata":{"connectionId":1,"message":{"seq":3164,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-61","path":"wasm/wasm-001b65c2/wasm-001b65c2-61","sourceReference":884015603}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105260,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-62"},"level":0} {"tag":"cdp.receive","timestamp":1588425105261,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","startLine":0,"startColumn":0,"endLine":39,"endColumn":38,"executionContextId":1,"hash":"0761ad880c81da4607fdef067a082465091155ed","isLiveEdit":false,"sourceMapURL":"workerMain.js.map","hasSourceURL":false,"isModule":false,"length":1604},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105261,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.157","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/loader.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.373412,"wallTime":1588425105.251758,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":9,"columnNumber":8},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":38,"columnNumber":2}],"parentId":{"id":"6","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105262,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.157","loaderId":"","timestamp":547787.375384,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/loader.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":84998,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105262,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.157","timestamp":547787.375401,"dataLength":84998,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105262,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.157","timestamp":547787.375554,"encodedDataLength":84998,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105262,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","startLine":0,"startColumn":0,"endLine":1814,"endColumn":0,"executionContextId":1,"hash":"0d3bfdfb969bf37501c85a204f62ef996bcc8398","isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":84998,"stackTrace":{"callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":9,"columnNumber":8}],"parentId":{"id":"6","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"dap.receive","timestamp":1588425105262,"metadata":{"connectionId":2,"message":{"command":"threads","type":"request","seq":5}},"level":0} {"tag":"dap.send","timestamp":1588425105262,"metadata":{"connectionId":2,"message":{"seq":7,"type":"response","request_seq":5,"command":"threads","success":true,"body":{"threads":[{"id":1,"name":"workerMain.js#editorWorkerService"}]}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105269,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-63"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105272,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-64"},"level":0} {"tag":"dap.send","timestamp":1588425105286,"metadata":{"connectionId":1,"message":{"seq":3165,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-62","path":"wasm/wasm-001b65c2/wasm-001b65c2-62","sourceReference":437517564}}}},"level":0} {"tag":"dap.send","timestamp":1588425105286,"metadata":{"connectionId":1,"message":{"seq":3166,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-63","path":"wasm/wasm-001b65c2/wasm-001b65c2-63","sourceReference":429318577}}}},"level":0} {"tag":"dap.send","timestamp":1588425105287,"metadata":{"connectionId":1,"message":{"seq":3167,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-64","path":"wasm/wasm-001b65c2/wasm-001b65c2-64","sourceReference":985908266}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105289,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-65"},"level":0} {"tag":"cdp.receive","timestamp":1588425105309,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.158","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.384157,"wallTime":1588425105.262503,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105309,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.158","loaderId":"","timestamp":547787.385536,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":11659,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105309,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.158","timestamp":547787.385638,"dataLength":11659,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105309,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.158","timestamp":547787.385706,"encodedDataLength":11659,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","startLine":0,"startColumn":0,"endLine":280,"endColumn":40,"executionContextId":1,"hash":"1e4404551e0be9a411ad089a95fe405f01508de3","isLiveEdit":false,"sourceMapURL":"simpleWorker.js.map","hasSourceURL":false,"isModule":false,"length":11659,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.159","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.38687,"wallTime":1588425105.265215,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.159","loaderId":"","timestamp":547787.38829,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5770,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.159","timestamp":547787.388304,"dataLength":5770,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.159","timestamp":547787.388314,"encodedDataLength":5770,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"14","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","startLine":0,"startColumn":0,"endLine":157,"endColumn":34,"executionContextId":1,"hash":"2ec16db26ac756ee4381a2954d021352258febc8","isLiveEdit":false,"sourceMapURL":"errors.js.map","hasSourceURL":false,"isModule":false,"length":5770,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.160","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.390032,"wallTime":1588425105.268376,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.160","loaderId":"","timestamp":547787.391311,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":7773,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.160","timestamp":547787.391324,"dataLength":7773,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.160","timestamp":547787.391347,"encodedDataLength":7773,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"15","url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","startLine":0,"startColumn":0,"endLine":220,"endColumn":37,"executionContextId":1,"hash":"2c9e39074f6024604cafe751a713c25746c76c44","isLiveEdit":false,"sourceMapURL":"lifecycle.js.map","hasSourceURL":false,"isModule":false,"length":7773,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.161","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.392179,"wallTime":1588425105.270525,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.161","loaderId":"","timestamp":547787.393321,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":915,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.161","timestamp":547787.393333,"dataLength":915,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.161","timestamp":547787.393341,"encodedDataLength":915,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"16","url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","startLine":0,"startColumn":0,"endLine":23,"endColumn":38,"executionContextId":1,"hash":"0b69309b788e072f18a90bed2d3e62cc77b10ac8","isLiveEdit":false,"sourceMapURL":"functional.js.map","hasSourceURL":false,"isModule":false,"length":915,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105312,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.162","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.394174,"wallTime":1588425105.272519,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.162","loaderId":"","timestamp":547787.397227,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":8036,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.162","timestamp":547787.39724,"dataLength":8036,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.162","timestamp":547787.397261,"encodedDataLength":8036,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"17","url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","startLine":0,"startColumn":0,"endLine":187,"endColumn":36,"executionContextId":1,"hash":"143a3f5f15d430764e326dad887426143f661c35","isLiveEdit":false,"sourceMapURL":"platform.js.map","hasSourceURL":false,"isModule":false,"length":8036,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.163","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.398492,"wallTime":1588425105.276836,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.163","loaderId":"","timestamp":547787.399708,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":8639,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105313,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.163","timestamp":547787.399722,"dataLength":8639,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105314,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.163","timestamp":547787.399749,"encodedDataLength":8639,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105314,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"18","url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","startLine":0,"startColumn":0,"endLine":228,"endColumn":33,"executionContextId":1,"hash":"13d00c479c1228b948ea8ff3cbdbc60e33c77020","isLiveEdit":false,"sourceMapURL":"types.js.map","hasSourceURL":false,"isModule":false,"length":8639,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105321,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-66"},"level":0} {"tag":"dap.send","timestamp":1588425105322,"metadata":{"connectionId":1,"message":{"seq":3168,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-65","path":"wasm/wasm-001b65c2/wasm-001b65c2-65","sourceReference":537518800}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105322,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-67"},"level":0} {"tag":"dap.receive","timestamp":1588425105323,"metadata":{"connectionId":2,"message":{"command":"enableCustomBreakpoints","arguments":{"ids":[]},"type":"request","seq":6}},"level":0} {"tag":"dap.send","timestamp":1588425105323,"metadata":{"connectionId":2,"message":{"seq":8,"type":"response","request_seq":6,"command":"enableCustomBreakpoints","success":true,"body":{}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105323,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-68"},"level":0} {"tag":"dap.send","timestamp":1588425105324,"metadata":{"connectionId":1,"message":{"seq":3169,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-66","path":"wasm/wasm-001b65c2/wasm-001b65c2-66","sourceReference":855664427}}}},"level":0} {"tag":"dap.send","timestamp":1588425105324,"metadata":{"connectionId":1,"message":{"seq":3170,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-67","path":"wasm/wasm-001b65c2/wasm-001b65c2-67","sourceReference":1844983939}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105325,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/loader.js","absolutePath":"/Users/roblou/code/vscode/out/vs/loader.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105325,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-69"},"level":0} {"tag":"dap.send","timestamp":1588425105325,"metadata":{"connectionId":1,"message":{"seq":3171,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-68","path":"wasm/wasm-001b65c2/wasm-001b65c2-68","sourceReference":1163649529}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105326,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","absolutePath":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105326,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-70"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105327,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-71"},"level":0} {"tag":"dap.send","timestamp":1588425105327,"metadata":{"connectionId":1,"message":{"seq":3172,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-69","path":"wasm/wasm-001b65c2/wasm-001b65c2-69","sourceReference":1380361830}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105327,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-72"},"level":0} {"tag":"dap.send","timestamp":1588425105328,"metadata":{"connectionId":1,"message":{"seq":3173,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-70","path":"wasm/wasm-001b65c2/wasm-001b65c2-70","sourceReference":251437825}}}},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105329,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105329,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/worker/workerMain.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","sourceMapSources":["vs/base/worker/workerMain.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105329,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-73"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105330,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-74"},"level":0} {"tag":"dap.send","timestamp":1588425105330,"metadata":{"connectionId":2,"message":{"seq":9,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","path":"/Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105330,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105331,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105331,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/worker/simpleWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","sourceMapSources":["vs/base/common/worker/simpleWorker.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105345,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-75"},"level":0} {"tag":"dap.send","timestamp":1588425105346,"metadata":{"connectionId":2,"message":{"seq":10,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105348,"metadata":{"connectionId":2,"message":{"seq":11,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/loader.js","path":"/Users/roblou/code/vscode/out/vs/loader.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105349,"metadata":{"connectionId":2,"message":{"seq":12,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","path":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105349,"metadata":{"connectionId":1,"message":{"seq":3174,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-71","path":"wasm/wasm-001b65c2/wasm-001b65c2-71","sourceReference":1666139493}}}},"level":0} {"tag":"dap.send","timestamp":1588425105349,"metadata":{"connectionId":1,"message":{"seq":3175,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-72","path":"wasm/wasm-001b65c2/wasm-001b65c2-72","sourceReference":138584293}}}},"level":0} {"tag":"dap.send","timestamp":1588425105349,"metadata":{"connectionId":1,"message":{"seq":3176,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-73","path":"wasm/wasm-001b65c2/wasm-001b65c2-73","sourceReference":190255946}}}},"level":0} {"tag":"dap.send","timestamp":1588425105349,"metadata":{"connectionId":1,"message":{"seq":3177,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-74","path":"wasm/wasm-001b65c2/wasm-001b65c2-74","sourceReference":1661231523}}}},"level":0} {"tag":"dap.send","timestamp":1588425105349,"metadata":{"connectionId":2,"message":{"seq":13,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","path":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105350,"metadata":{"connectionId":1,"message":{"seq":3178,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-75","path":"wasm/wasm-001b65c2/wasm-001b65c2-75","sourceReference":741171524}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105356,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-76"},"level":0} {"tag":"dap.receive","timestamp":1588425105357,"metadata":{"connectionId":2,"message":{"command":"threads","type":"request","seq":7}},"level":0} {"tag":"dap.send","timestamp":1588425105357,"metadata":{"connectionId":2,"message":{"seq":14,"type":"response","request_seq":7,"command":"threads","success":true,"body":{"threads":[{"id":1,"name":"workerMain.js#editorWorkerService"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425105358,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1601","url":"/Users/roblou/code/vscode/node_modules/keytar/lib/keytar.js","startLine":0,"startColumn":0,"endLine":60,"endColumn":66,"executionContextId":1,"hash":"3f3cb34f05ab9b3079687707cc5c162458664f61","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":1780,"stackTrace":{"callFrames":[{"functionName":"runInThisContext","scriptId":"47","url":"vm.js","lineNumber":125,"columnNumber":19}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105359,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-77"},"level":0} {"tag":"dap.send","timestamp":1588425105362,"metadata":{"connectionId":1,"message":{"seq":3179,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-76","path":"wasm/wasm-001b65c2/wasm-001b65c2-76","sourceReference":2843556}}}},"level":0} {"tag":"dap.send","timestamp":1588425105363,"metadata":{"connectionId":1,"message":{"seq":3180,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-77","path":"wasm/wasm-001b65c2/wasm-001b65c2-77","sourceReference":1731481316}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105370,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-78"},"level":0} {"tag":"dap.send","timestamp":1588425105377,"metadata":{"connectionId":1,"message":{"seq":3181,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"initialize":{"operation":"initialize","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"initialize.errors":[],"threads":{"operation":"threads","totalTime":0.5,"max":0.3,"avg":0.3,"stddev":0,"count":2,"failed":0},"threads.errors":[],"setExceptionBreakpoints":{"operation":"setExceptionBreakpoints","totalTime":624.3,"max":624.3,"avg":624.3,"stddev":null,"count":1,"failed":0},"setExceptionBreakpoints.errors":[],"configurationDone":{"operation":"configurationDone","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"configurationDone.errors":[],"launch":{"operation":"launch","totalTime":629.9,"max":629.9,"avg":629.9,"stddev":null,"count":1,"failed":0},"launch.errors":[],"enableCustomBreakpoints":{"operation":"enableCustomBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"enableCustomBreakpoints.errors":[]}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105378,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-79"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105378,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/errors.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105383,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105383,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/errors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/errors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/errors.ts","sourceMapSources":["vs/base/common/errors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105388,"metadata":{"connectionId":1,"message":{"seq":3182,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-78","path":"wasm/wasm-001b65c2/wasm-001b65c2-78","sourceReference":1544057928}}}},"level":0} {"tag":"dap.send","timestamp":1588425105388,"metadata":{"connectionId":1,"message":{"seq":3183,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-79","path":"wasm/wasm-001b65c2/wasm-001b65c2-79","sourceReference":656399592}}}},"level":0} {"tag":"dap.send","timestamp":1588425105388,"metadata":{"connectionId":2,"message":{"seq":15,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/errors.js","path":"/Users/roblou/code/vscode/out/vs/base/common/errors.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105539,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-80"},"level":0} {"tag":"dap.send","timestamp":1588425105539,"metadata":{"connectionId":2,"message":{"seq":16,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105539,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-81"},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.164","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.403724,"wallTime":1588425105.282068,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.164","loaderId":"","timestamp":547787.407094,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":22734,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.164","timestamp":547787.407108,"dataLength":22734,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.164","timestamp":547787.407151,"encodedDataLength":22734,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"19","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","startLine":0,"startColumn":0,"endLine":496,"endColumn":46,"executionContextId":1,"hash":"13ad376385356bd25cbac35bb26b7339089365a2","isLiveEdit":false,"sourceMapURL":"editorSimpleWorker.js.map","hasSourceURL":false,"isModule":false,"length":22734,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.165","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.409049,"wallTime":1588425105.287394,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.165","loaderId":"","timestamp":547787.410138,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":18505,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.165","timestamp":547787.410154,"dataLength":18505,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.165","timestamp":547787.410179,"encodedDataLength":18505,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"20","url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","startLine":0,"startColumn":0,"endLine":533,"endColumn":34,"executionContextId":1,"hash":"10fedfc2513e56254c94c0c6a06b69b36eeb4554","isLiveEdit":false,"sourceMapURL":"arrays.js.map","hasSourceURL":false,"isModule":false,"length":18505,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.166","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.411686,"wallTime":1588425105.29003,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.166","loaderId":"","timestamp":547787.413695,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":50276,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.166","timestamp":547787.413708,"dataLength":50276,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.166","timestamp":547787.413809,"encodedDataLength":50276,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"21","url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","startLine":0,"startColumn":0,"endLine":830,"endColumn":32,"executionContextId":1,"hash":"330c75c310e3061c514645e4b8de3e8b69a95ffa","isLiveEdit":false,"sourceMapURL":"diff.js.map","hasSourceURL":false,"isModule":false,"length":50276,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105541,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.167","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.415891,"wallTime":1588425105.294235,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.167","loaderId":"","timestamp":547787.417682,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":1674,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.167","timestamp":547787.417697,"dataLength":1674,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.167","timestamp":547787.417708,"encodedDataLength":1674,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"22","url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":38,"executionContextId":1,"hash":"37d87831261211715641ddf5005f4db80f1ca4cd","isLiveEdit":false,"sourceMapURL":"diffChange.js.map","hasSourceURL":false,"isModule":false,"length":1674,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.168","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.418492,"wallTime":1588425105.296836,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.168","loaderId":"","timestamp":547787.420484,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":12254,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.168","timestamp":547787.420496,"dataLength":12254,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.168","timestamp":547787.420516,"encodedDataLength":12254,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"23","url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","startLine":0,"startColumn":0,"endLine":280,"endColumn":32,"executionContextId":1,"hash":"3923fd9d9e19ce1017a8bc448877fc5e2fdcb5b7","isLiveEdit":false,"sourceMapURL":"hash.js.map","hasSourceURL":false,"isModule":false,"length":12254,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.169","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.421419,"wallTime":1588425105.299763,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.169","loaderId":"","timestamp":547787.423652,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":67305,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.169","timestamp":547787.423666,"dataLength":67305,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.169","timestamp":547787.424134,"encodedDataLength":67305,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"24","url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","startLine":0,"startColumn":0,"endLine":1010,"endColumn":35,"executionContextId":1,"hash":"34aeda1a80a584f007deb4fb1be286a75162ea5c","isLiveEdit":false,"sourceMapURL":"strings.js.map","hasSourceURL":false,"isModule":false,"length":67226,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.170","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.427343,"wallTime":1588425105.305686,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.170","loaderId":"","timestamp":547787.428794,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":23750,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.170","timestamp":547787.428812,"dataLength":23750,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105542,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.170","timestamp":547787.42886,"encodedDataLength":23750,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"25","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","startLine":0,"startColumn":0,"endLine":592,"endColumn":31,"executionContextId":1,"hash":"16228b08370d5fd72f59050c496c8240708c2def","isLiveEdit":false,"sourceMapURL":"uri.js.map","hasSourceURL":false,"isModule":false,"length":23750,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.171","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.43034,"wallTime":1588425105.308683,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.171","loaderId":"","timestamp":547787.431572,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":58362,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.171","timestamp":547787.431584,"dataLength":58362,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.171","timestamp":547787.431672,"encodedDataLength":58362,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"26","url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","startLine":0,"startColumn":0,"endLine":1365,"endColumn":32,"executionContextId":1,"hash":"182be74e73ade8830ba55432910132884f4871b8","isLiveEdit":false,"sourceMapURL":"path.js.map","hasSourceURL":false,"isModule":false,"length":58362,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.172","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.434617,"wallTime":1588425105.312961,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.172","loaderId":"","timestamp":547787.436026,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":1143,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.172","timestamp":547787.436059,"dataLength":1143,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.172","timestamp":547787.436082,"encodedDataLength":1143,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"27","url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":35,"executionContextId":1,"hash":"1def968e323d60b37fd401cb60b7151d14ccf895","isLiveEdit":false,"sourceMapURL":"process.js.map","hasSourceURL":false,"isModule":false,"length":1143,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.173","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.437328,"wallTime":1588425105.315671,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.173","loaderId":"","timestamp":547787.438597,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":4658,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.173","timestamp":547787.438612,"dataLength":4658,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.173","timestamp":547787.438662,"encodedDataLength":4658,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"28","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":36,"executionContextId":1,"hash":"010af30d292aaee534c1776a77c248697fe6e199","isLiveEdit":false,"sourceMapURL":"position.js.map","hasSourceURL":false,"isModule":false,"length":4658,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105543,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.174","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.439424,"wallTime":1588425105.317767,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.174","loaderId":"","timestamp":547787.440871,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":15399,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.174","timestamp":547787.440885,"dataLength":15399,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.174","timestamp":547787.44091,"encodedDataLength":15399,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"29","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","startLine":0,"startColumn":0,"endLine":365,"endColumn":33,"executionContextId":1,"hash":"273086421a380c92123e02fb0de28d7916c0cb71","isLiveEdit":false,"sourceMapURL":"range.js.map","hasSourceURL":false,"isModule":false,"length":15399,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.175","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.442356,"wallTime":1588425105.320699,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.175","loaderId":"","timestamp":547787.449635,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":22076,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.175","timestamp":547787.44965,"dataLength":22076,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.175","timestamp":547787.449775,"encodedDataLength":22076,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"30","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","startLine":0,"startColumn":0,"endLine":393,"endColumn":40,"executionContextId":1,"hash":"302489324b0a87f820126782663a3a193b0edb01","isLiveEdit":false,"sourceMapURL":"diffComputer.js.map","hasSourceURL":false,"isModule":false,"length":22076,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.176","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.451236,"wallTime":1588425105.329579,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.176","loaderId":"","timestamp":547787.464991,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5475,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.176","timestamp":547787.465017,"dataLength":5475,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.176","timestamp":547787.465042,"encodedDataLength":5475,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"31","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":43,"executionContextId":1,"hash":"27b7ed8b5564410c79e1f208275d7fdd08eb3fb2","isLiveEdit":false,"sourceMapURL":"mirrorTextModel.js.map","hasSourceURL":false,"isModule":false,"length":5475,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.177","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.465751,"wallTime":1588425105.344092,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.177","loaderId":"","timestamp":547787.467342,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5957,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.177","timestamp":547787.467355,"dataLength":5957,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.177","timestamp":547787.467372,"encodedDataLength":5957,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"32","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":45,"executionContextId":1,"hash":"284630c243559fc8567076fe488f13e11991c285","isLiveEdit":false,"sourceMapURL":"prefixSumComputer.js.map","hasSourceURL":false,"isModule":false,"length":5957,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105544,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.178","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.467987,"wallTime":1588425105.34633,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.178","loaderId":"","timestamp":547787.471589,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":2505,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.178","timestamp":547787.471601,"dataLength":2505,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.178","timestamp":547787.471611,"encodedDataLength":2505,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"33","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":32,"executionContextId":1,"hash":"1cc7de0502a980217398127e32558bf66ca0a1ce","isLiveEdit":false,"sourceMapURL":"uint.js.map","hasSourceURL":false,"isModule":false,"length":2505,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.179","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.472623,"wallTime":1588425105.350965,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.179","loaderId":"","timestamp":547787.476046,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5043,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.179","timestamp":547787.47606,"dataLength":5043,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.179","timestamp":547787.476084,"encodedDataLength":5043,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"34","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":38,"executionContextId":1,"hash":"2dfd1d0a1d0795f94af55d8f7851801170f4bb85","isLiveEdit":false,"sourceMapURL":"wordHelper.js.map","hasSourceURL":false,"isModule":false,"length":5043,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.180","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.477324,"wallTime":1588425105.355666,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.180","loaderId":"","timestamp":547787.479415,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":14916,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.180","timestamp":547787.479428,"dataLength":14916,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.180","timestamp":547787.479492,"encodedDataLength":14916,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105545,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"35","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","startLine":0,"startColumn":0,"endLine":296,"endColumn":40,"executionContextId":1,"hash":"2ffed8e16eb3cb1532ffc5dac3f62aec51313ef1","isLiveEdit":false,"sourceMapURL":"linkComputer.js.map","hasSourceURL":false,"isModule":false,"length":14830,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.181","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.480256,"wallTime":1588425105.358598,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.181","loaderId":"","timestamp":547787.482729,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":2414,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.181","timestamp":547787.482742,"dataLength":2414,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.181","timestamp":547787.482754,"encodedDataLength":2414,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"36","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","startLine":0,"startColumn":0,"endLine":62,"endColumn":47,"executionContextId":1,"hash":"0a87812c6ef4dcc46308edb145ab6a33122935c9","isLiveEdit":false,"sourceMapURL":"characterClassifier.js.map","hasSourceURL":false,"isModule":false,"length":2414,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.182","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.483685,"wallTime":1588425105.362027,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.182","loaderId":"","timestamp":547787.486657,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":3981,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.182","timestamp":547787.486671,"dataLength":3981,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.182","timestamp":547787.486683,"encodedDataLength":3981,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"37","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":49,"executionContextId":1,"hash":"26f4303e9f6b48ea487611a239960de30b4c5fa1","isLiveEdit":false,"sourceMapURL":"inplaceReplaceSupport.js.map","hasSourceURL":false,"isModule":false,"length":3981,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.183","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.487644,"wallTime":1588425105.365985,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.183","loaderId":"","timestamp":547787.492687,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":2163,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.183","timestamp":547787.49271,"dataLength":2163,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.183","timestamp":547787.492745,"encodedDataLength":2163,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"38","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":42,"executionContextId":1,"hash":"3f3d47fb496be7f832dbb736c5e889687ed246af","isLiveEdit":false,"sourceMapURL":"standaloneBase.js.map","hasSourceURL":false,"isModule":false,"length":2163,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.184","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.493338,"wallTime":1588425105.371678,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105546,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.184","loaderId":"","timestamp":547787.495284,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":4416,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.184","timestamp":547787.495298,"dataLength":4416,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.184","timestamp":547787.495309,"encodedDataLength":4416,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"39","url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":40,"executionContextId":1,"hash":"062a64b7042bde511df7291faa628fd37742f987","isLiveEdit":false,"sourceMapURL":"cancellation.js.map","hasSourceURL":false,"isModule":false,"length":4416,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.185","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.495898,"wallTime":1588425105.37424,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.185","loaderId":"","timestamp":547787.49771,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":27605,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.185","timestamp":547787.497723,"dataLength":27605,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.185","timestamp":547787.497777,"encodedDataLength":27605,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"40","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","startLine":0,"startColumn":0,"endLine":701,"endColumn":33,"executionContextId":1,"hash":"32f199440075f93a6f84d741c935e07641949e98","isLiveEdit":false,"sourceMapURL":"event.js.map","hasSourceURL":false,"isModule":false,"length":27605,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.186","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.498903,"wallTime":1588425105.377244,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.186","loaderId":"","timestamp":547787.500829,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":4406,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.186","timestamp":547787.500842,"dataLength":4406,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.186","timestamp":547787.500857,"encodedDataLength":4406,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"41","url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","startLine":0,"startColumn":0,"endLine":133,"endColumn":38,"executionContextId":1,"hash":"33fcdb9d5bf9f8db796585b7b16c34a426cad31d","isLiveEdit":false,"sourceMapURL":"linkedList.js.map","hasSourceURL":false,"isModule":false,"length":4406,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.187","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.502066,"wallTime":1588425105.380406,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.187","loaderId":"","timestamp":547787.503471,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":21997,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.187","timestamp":547787.503484,"dataLength":21997,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105547,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.187","timestamp":547787.503535,"encodedDataLength":21997,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"42","url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","startLine":0,"startColumn":0,"endLine":502,"endColumn":36,"executionContextId":1,"hash":"1b09f03161fe8283540e4a52a576944c532c4b22","isLiveEdit":false,"sourceMapURL":"keyCodes.js.map","hasSourceURL":false,"isModule":false,"length":21997,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.188","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.505614,"wallTime":1588425105.383955,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.188","loaderId":"","timestamp":547787.509537,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5998,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.188","timestamp":547787.509551,"dataLength":5998,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.188","timestamp":547787.509567,"encodedDataLength":5998,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"43","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","startLine":0,"startColumn":0,"endLine":143,"endColumn":37,"executionContextId":1,"hash":"3c5a5e2d6dabcd0043229b283b0d87ab23f75b0c","isLiveEdit":false,"sourceMapURL":"selection.js.map","hasSourceURL":false,"isModule":false,"length":5998,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.189","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.510397,"wallTime":1588425105.388738,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.189","loaderId":"","timestamp":547787.512234,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":1365,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.189","timestamp":547787.512246,"dataLength":1365,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.189","timestamp":547787.512251,"encodedDataLength":1365,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"44","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":33,"executionContextId":1,"hash":"3f04b4c58f4576d620f870180ecbb7017e59659d","isLiveEdit":false,"sourceMapURL":"token.js.map","hasSourceURL":false,"isModule":false,"length":1365,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.190","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547787.51286,"wallTime":1588425105.391201,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"7","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.190","loaderId":"","timestamp":547787.514554,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":43661,"protocol":"file","securityState":"secure"}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.190","timestamp":547787.514566,"dataLength":43661,"encodedDataLength":0},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.190","timestamp":547787.514624,"encodedDataLength":43661,"shouldReportCorbBlocking":false},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"cdp.receive","timestamp":1588425105548,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"45","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","startLine":0,"startColumn":0,"endLine":810,"endColumn":43,"executionContextId":1,"hash":"0a1fbb6b6d9b3ce310baace92ef075a0781fcbbc","isLiveEdit":false,"sourceMapURL":"standaloneEnums.js.map","hasSourceURL":false,"isModule":false,"length":43661,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"BE516397D0458F360AA29DDC69F15F11"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105549,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-82"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105550,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-83"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105550,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105550,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105550,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/lifecycle.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","sourceMapSources":["vs/base/common/lifecycle.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105551,"metadata":{"connectionId":1,"message":{"seq":3184,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-80","path":"wasm/wasm-001b65c2/wasm-001b65c2-80","sourceReference":141735275}}}},"level":0} {"tag":"dap.send","timestamp":1588425105551,"metadata":{"connectionId":1,"message":{"seq":3185,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-81","path":"wasm/wasm-001b65c2/wasm-001b65c2-81","sourceReference":1384367236}}}},"level":0} {"tag":"dap.send","timestamp":1588425105551,"metadata":{"connectionId":1,"message":{"seq":3186,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-82","path":"wasm/wasm-001b65c2/wasm-001b65c2-82","sourceReference":1777931008}}}},"level":0} {"tag":"dap.send","timestamp":1588425105551,"metadata":{"connectionId":1,"message":{"seq":3187,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-83","path":"wasm/wasm-001b65c2/wasm-001b65c2-83","sourceReference":237841915}}}},"level":0} {"tag":"dap.send","timestamp":1588425105551,"metadata":{"connectionId":2,"message":{"seq":17,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","path":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105552,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-84"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105552,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-85"},"level":0} {"tag":"dap.send","timestamp":1588425105552,"metadata":{"connectionId":2,"message":{"seq":18,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105554,"metadata":{"connectionId":1,"message":{"seq":3188,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-84","path":"wasm/wasm-001b65c2/wasm-001b65c2-84","sourceReference":1516499459}}}},"level":0} {"tag":"dap.send","timestamp":1588425105554,"metadata":{"connectionId":1,"message":{"seq":3189,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-85","path":"wasm/wasm-001b65c2/wasm-001b65c2-85","sourceReference":199927468}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105554,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-86"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105554,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-87"},"level":0} {"tag":"dap.send","timestamp":1588425105555,"metadata":{"connectionId":1,"message":{"seq":3190,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-86","path":"wasm/wasm-001b65c2/wasm-001b65c2-86","sourceReference":802162598}}}},"level":0} {"tag":"dap.send","timestamp":1588425105555,"metadata":{"connectionId":1,"message":{"seq":3191,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-87","path":"wasm/wasm-001b65c2/wasm-001b65c2-87","sourceReference":1590072993}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105555,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-88"},"level":0} {"tag":"dap.send","timestamp":1588425105555,"metadata":{"connectionId":1,"message":{"seq":3192,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-88","path":"wasm/wasm-001b65c2/wasm-001b65c2-88","sourceReference":1933111470}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105556,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-89"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105556,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/functional.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105556,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105556,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/functional.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/functional.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/functional.ts","sourceMapSources":["vs/base/common/functional.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105557,"metadata":{"connectionId":1,"message":{"seq":3193,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-89","path":"wasm/wasm-001b65c2/wasm-001b65c2-89","sourceReference":1845351438}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105557,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-90"},"level":0} {"tag":"dap.send","timestamp":1588425105557,"metadata":{"connectionId":2,"message":{"seq":19,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105557,"metadata":{"connectionId":2,"message":{"seq":20,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/functional.js","path":"/Users/roblou/code/vscode/out/vs/base/common/functional.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105557,"metadata":{"connectionId":1,"message":{"seq":3194,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-90","path":"wasm/wasm-001b65c2/wasm-001b65c2-90","sourceReference":1833946634}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105558,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-91"},"level":0} {"tag":"dap.send","timestamp":1588425105558,"metadata":{"connectionId":1,"message":{"seq":3195,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-91","path":"wasm/wasm-001b65c2/wasm-001b65c2-91","sourceReference":627911051}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105558,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-92"},"level":0} {"tag":"dap.send","timestamp":1588425105559,"metadata":{"connectionId":1,"message":{"seq":3196,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-92","path":"wasm/wasm-001b65c2/wasm-001b65c2-92","sourceReference":424666146}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105559,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-93"},"level":0} {"tag":"dap.send","timestamp":1588425105560,"metadata":{"connectionId":1,"message":{"seq":3197,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-93","path":"wasm/wasm-001b65c2/wasm-001b65c2-93","sourceReference":1704512038}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105560,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-94"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105562,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/platform.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105562,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105562,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/platform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/platform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/platform.ts","sourceMapSources":["vs/base/common/platform.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105562,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-95"},"level":0} {"tag":"dap.send","timestamp":1588425105562,"metadata":{"connectionId":2,"message":{"seq":21,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105563,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-96"},"level":0} {"tag":"dap.send","timestamp":1588425105565,"metadata":{"connectionId":1,"message":{"seq":3198,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-94","path":"wasm/wasm-001b65c2/wasm-001b65c2-94","sourceReference":1099745709}}}},"level":0} {"tag":"dap.send","timestamp":1588425105565,"metadata":{"connectionId":1,"message":{"seq":3199,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-95","path":"wasm/wasm-001b65c2/wasm-001b65c2-95","sourceReference":815703868}}}},"level":0} {"tag":"dap.send","timestamp":1588425105565,"metadata":{"connectionId":1,"message":{"seq":3200,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-96","path":"wasm/wasm-001b65c2/wasm-001b65c2-96","sourceReference":1671740387}}}},"level":0} {"tag":"dap.send","timestamp":1588425105565,"metadata":{"connectionId":2,"message":{"seq":22,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/platform.js","path":"/Users/roblou/code/vscode/out/vs/base/common/platform.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105565,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-97"},"level":0} {"tag":"dap.send","timestamp":1588425105566,"metadata":{"connectionId":1,"message":{"seq":3201,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-97","path":"wasm/wasm-001b65c2/wasm-001b65c2-97","sourceReference":1439886728}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105566,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-98"},"level":0} {"tag":"dap.send","timestamp":1588425105567,"metadata":{"connectionId":1,"message":{"seq":3202,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-98","path":"wasm/wasm-001b65c2/wasm-001b65c2-98","sourceReference":1637486192}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105568,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-99"},"level":0} {"tag":"dap.send","timestamp":1588425105568,"metadata":{"connectionId":1,"message":{"seq":3203,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-99","path":"wasm/wasm-001b65c2/wasm-001b65c2-99","sourceReference":930657456}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105568,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/types.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105569,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105569,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/types.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/types.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/types.ts","sourceMapSources":["vs/base/common/types.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105569,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-100"},"level":0} {"tag":"dap.send","timestamp":1588425105569,"metadata":{"connectionId":2,"message":{"seq":23,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105570,"metadata":{"connectionId":2,"message":{"seq":24,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/types.js","path":"/Users/roblou/code/vscode/out/vs/base/common/types.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105570,"metadata":{"connectionId":1,"message":{"seq":3204,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-100","path":"wasm/wasm-001b65c2/wasm-001b65c2-100","sourceReference":1351423614}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105570,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-101"},"level":0} {"tag":"dap.send","timestamp":1588425105571,"metadata":{"connectionId":1,"message":{"seq":3205,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-101","path":"wasm/wasm-001b65c2/wasm-001b65c2-101","sourceReference":262189304}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105571,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-102"},"level":0} {"tag":"dap.send","timestamp":1588425105571,"metadata":{"connectionId":1,"message":{"seq":3206,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-102","path":"wasm/wasm-001b65c2/wasm-001b65c2-102","sourceReference":1031795934}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105572,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-103"},"level":0} {"tag":"dap.send","timestamp":1588425105572,"metadata":{"connectionId":1,"message":{"seq":3207,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-103","path":"wasm/wasm-001b65c2/wasm-001b65c2-103","sourceReference":346953832}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105576,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-104"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105577,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105577,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105577,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/editorSimpleWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","sourceMapSources":["vs/editor/common/services/editorSimpleWorker.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105577,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-105"},"level":0} {"tag":"dap.send","timestamp":1588425105578,"metadata":{"connectionId":2,"message":{"seq":25,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105578,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-106"},"level":0} {"tag":"dap.send","timestamp":1588425105578,"metadata":{"connectionId":1,"message":{"seq":3208,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-104","path":"wasm/wasm-001b65c2/wasm-001b65c2-104","sourceReference":1082668871}}}},"level":0} {"tag":"dap.send","timestamp":1588425105578,"metadata":{"connectionId":2,"message":{"seq":26,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105578,"metadata":{"connectionId":1,"message":{"seq":3209,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-105","path":"wasm/wasm-001b65c2/wasm-001b65c2-105","sourceReference":99651386}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105578,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-107"},"level":0} {"tag":"dap.send","timestamp":1588425105578,"metadata":{"connectionId":1,"message":{"seq":3210,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-106","path":"wasm/wasm-001b65c2/wasm-001b65c2-106","sourceReference":1309222859}}}},"level":0} {"tag":"dap.send","timestamp":1588425105580,"metadata":{"connectionId":1,"message":{"seq":3211,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-107","path":"wasm/wasm-001b65c2/wasm-001b65c2-107","sourceReference":1979523293}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105581,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-108"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105581,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-109"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105582,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105582,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105582,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/arrays.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/arrays.ts","sourceMapSources":["vs/base/common/arrays.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105582,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-110"},"level":0} {"tag":"dap.send","timestamp":1588425105582,"metadata":{"connectionId":2,"message":{"seq":27,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105583,"metadata":{"connectionId":1,"message":{"seq":3212,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-108","path":"wasm/wasm-001b65c2/wasm-001b65c2-108","sourceReference":2021350988}}}},"level":0} {"tag":"dap.send","timestamp":1588425105583,"metadata":{"connectionId":1,"message":{"seq":3213,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-109","path":"wasm/wasm-001b65c2/wasm-001b65c2-109","sourceReference":355432646}}}},"level":0} {"tag":"dap.send","timestamp":1588425105583,"metadata":{"connectionId":2,"message":{"seq":28,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js","path":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105583,"metadata":{"connectionId":1,"message":{"seq":3214,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-110","path":"wasm/wasm-001b65c2/wasm-001b65c2-110","sourceReference":320659299}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105583,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-111"},"level":0} {"tag":"dap.send","timestamp":1588425105584,"metadata":{"connectionId":1,"message":{"seq":3215,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-111","path":"wasm/wasm-001b65c2/wasm-001b65c2-111","sourceReference":5403301}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105584,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-112"},"level":0} {"tag":"dap.send","timestamp":1588425105585,"metadata":{"connectionId":1,"message":{"seq":3216,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-112","path":"wasm/wasm-001b65c2/wasm-001b65c2-112","sourceReference":662896335}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105585,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-113"},"level":0} {"tag":"dap.send","timestamp":1588425105586,"metadata":{"connectionId":1,"message":{"seq":3217,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-113","path":"wasm/wasm-001b65c2/wasm-001b65c2-113","sourceReference":453622844}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105586,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-114"},"level":0} {"tag":"dap.send","timestamp":1588425105587,"metadata":{"connectionId":1,"message":{"seq":3218,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-114","path":"wasm/wasm-001b65c2/wasm-001b65c2-114","sourceReference":1112931250}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105587,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105587,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105588,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/diff/diff.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","sourceMapSources":["vs/base/common/diff/diff.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105588,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-115"},"level":0} {"tag":"dap.send","timestamp":1588425105588,"metadata":{"connectionId":2,"message":{"seq":29,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105588,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-116"},"level":0} {"tag":"dap.send","timestamp":1588425105590,"metadata":{"connectionId":2,"message":{"seq":30,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","path":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105596,"metadata":{"connectionId":1,"message":{"seq":3219,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-115","path":"wasm/wasm-001b65c2/wasm-001b65c2-115","sourceReference":880654860}}}},"level":0} {"tag":"dap.send","timestamp":1588425105596,"metadata":{"connectionId":1,"message":{"seq":3220,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-116","path":"wasm/wasm-001b65c2/wasm-001b65c2-116","sourceReference":1995667035}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105596,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-117"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105597,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-118"},"level":0} {"tag":"dap.send","timestamp":1588425105597,"metadata":{"connectionId":1,"message":{"seq":3221,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-117","path":"wasm/wasm-001b65c2/wasm-001b65c2-117","sourceReference":2076425213}}}},"level":0} {"tag":"dap.send","timestamp":1588425105598,"metadata":{"connectionId":1,"message":{"seq":3222,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-118","path":"wasm/wasm-001b65c2/wasm-001b65c2-118","sourceReference":109570622}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105598,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-119"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105598,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105598,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105598,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/diff/diffChange.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","sourceMapSources":["vs/base/common/diff/diffChange.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105599,"metadata":{"connectionId":1,"message":{"seq":3223,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-119","path":"wasm/wasm-001b65c2/wasm-001b65c2-119","sourceReference":1417849975}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105599,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-120"},"level":0} {"tag":"dap.send","timestamp":1588425105599,"metadata":{"connectionId":2,"message":{"seq":31,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105599,"metadata":{"connectionId":2,"message":{"seq":32,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","path":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105599,"metadata":{"connectionId":1,"message":{"seq":3224,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-120","path":"wasm/wasm-001b65c2/wasm-001b65c2-120","sourceReference":1775899504}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105600,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-121"},"level":0} {"tag":"dap.send","timestamp":1588425105600,"metadata":{"connectionId":1,"message":{"seq":3225,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-121","path":"wasm/wasm-001b65c2/wasm-001b65c2-121","sourceReference":1448239421}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105601,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-122"},"level":0} {"tag":"dap.send","timestamp":1588425105601,"metadata":{"connectionId":1,"message":{"seq":3226,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-122","path":"wasm/wasm-001b65c2/wasm-001b65c2-122","sourceReference":1830922135}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105601,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-123"},"level":0} {"tag":"dap.send","timestamp":1588425105602,"metadata":{"connectionId":1,"message":{"seq":3227,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-123","path":"wasm/wasm-001b65c2/wasm-001b65c2-123","sourceReference":716715931}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105602,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-124"},"level":0} {"tag":"dap.send","timestamp":1588425105603,"metadata":{"connectionId":1,"message":{"seq":3228,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-124","path":"wasm/wasm-001b65c2/wasm-001b65c2-124","sourceReference":201188739}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105603,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/hash.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105603,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105603,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/hash.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/hash.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/hash.ts","sourceMapSources":["vs/base/common/hash.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105604,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-125"},"level":0} {"tag":"dap.send","timestamp":1588425105604,"metadata":{"connectionId":2,"message":{"seq":33,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105605,"metadata":{"connectionId":2,"message":{"seq":34,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/hash.js","path":"/Users/roblou/code/vscode/out/vs/base/common/hash.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105605,"metadata":{"connectionId":1,"message":{"seq":3229,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-125","path":"wasm/wasm-001b65c2/wasm-001b65c2-125","sourceReference":1443614234}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105605,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-126"},"level":0} {"tag":"dap.send","timestamp":1588425105606,"metadata":{"connectionId":1,"message":{"seq":3230,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-126","path":"wasm/wasm-001b65c2/wasm-001b65c2-126","sourceReference":31060451}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105606,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-127"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105607,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-128"},"level":0} {"tag":"dap.send","timestamp":1588425105607,"metadata":{"connectionId":1,"message":{"seq":3231,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-127","path":"wasm/wasm-001b65c2/wasm-001b65c2-127","sourceReference":15106488}}}},"level":0} {"tag":"dap.send","timestamp":1588425105607,"metadata":{"connectionId":1,"message":{"seq":3232,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-128","path":"wasm/wasm-001b65c2/wasm-001b65c2-128","sourceReference":1605942662}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105608,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-129"},"level":0} {"tag":"dap.send","timestamp":1588425105608,"metadata":{"connectionId":1,"message":{"seq":3233,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-129","path":"wasm/wasm-001b65c2/wasm-001b65c2-129","sourceReference":151770827}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105608,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/strings.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105609,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105609,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/strings.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/strings.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/strings.ts","sourceMapSources":["vs/base/common/strings.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105609,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-130"},"level":0} {"tag":"dap.send","timestamp":1588425105609,"metadata":{"connectionId":2,"message":{"seq":35,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105610,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-131"},"level":0} {"tag":"dap.send","timestamp":1588425105611,"metadata":{"connectionId":2,"message":{"seq":36,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/strings.js","path":"/Users/roblou/code/vscode/out/vs/base/common/strings.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105611,"metadata":{"connectionId":1,"message":{"seq":3234,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-130","path":"wasm/wasm-001b65c2/wasm-001b65c2-130","sourceReference":2113852720}}}},"level":0} {"tag":"dap.send","timestamp":1588425105611,"metadata":{"connectionId":1,"message":{"seq":3235,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-131","path":"wasm/wasm-001b65c2/wasm-001b65c2-131","sourceReference":1057175155}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105611,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-132"},"level":0} {"tag":"dap.send","timestamp":1588425105612,"metadata":{"connectionId":1,"message":{"seq":3236,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-132","path":"wasm/wasm-001b65c2/wasm-001b65c2-132","sourceReference":1952869698}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105612,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-133"},"level":0} {"tag":"dap.send","timestamp":1588425105612,"metadata":{"connectionId":1,"message":{"seq":3237,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-133","path":"wasm/wasm-001b65c2/wasm-001b65c2-133","sourceReference":1896742253}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105613,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-134"},"level":0} {"tag":"dap.send","timestamp":1588425105613,"metadata":{"connectionId":1,"message":{"seq":3238,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-134","path":"wasm/wasm-001b65c2/wasm-001b65c2-134","sourceReference":550665634}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105619,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uri.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105619,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105619,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uri.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uri.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uri.ts","sourceMapSources":["vs/base/common/uri.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105619,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-135"},"level":0} {"tag":"dap.send","timestamp":1588425105620,"metadata":{"connectionId":2,"message":{"seq":37,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105620,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-136"},"level":0} {"tag":"dap.send","timestamp":1588425105620,"metadata":{"connectionId":2,"message":{"seq":38,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uri.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uri.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105620,"metadata":{"connectionId":1,"message":{"seq":3239,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-135","path":"wasm/wasm-001b65c2/wasm-001b65c2-135","sourceReference":590927339}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105620,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-137"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105620,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-138"},"level":0} {"tag":"dap.send","timestamp":1588425105621,"metadata":{"connectionId":1,"message":{"seq":3240,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-136","path":"wasm/wasm-001b65c2/wasm-001b65c2-136","sourceReference":1082467216}}}},"level":0} {"tag":"dap.send","timestamp":1588425105621,"metadata":{"connectionId":1,"message":{"seq":3241,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-137","path":"wasm/wasm-001b65c2/wasm-001b65c2-137","sourceReference":82999193}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105622,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-139"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105622,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/path.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105622,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105622,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/path.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/path.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/path.ts","sourceMapSources":["vs/base/common/path.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105622,"metadata":{"connectionId":1,"message":{"seq":3242,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-138","path":"wasm/wasm-001b65c2/wasm-001b65c2-138","sourceReference":625839318}}}},"level":0} {"tag":"dap.send","timestamp":1588425105622,"metadata":{"connectionId":1,"message":{"seq":3243,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-139","path":"wasm/wasm-001b65c2/wasm-001b65c2-139","sourceReference":1222514120}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105622,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-140"},"level":0} {"tag":"dap.send","timestamp":1588425105623,"metadata":{"connectionId":2,"message":{"seq":39,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105624,"metadata":{"connectionId":2,"message":{"seq":40,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/path.js","path":"/Users/roblou/code/vscode/out/vs/base/common/path.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105624,"metadata":{"connectionId":1,"message":{"seq":3244,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-140","path":"wasm/wasm-001b65c2/wasm-001b65c2-140","sourceReference":1678382670}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105624,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-141"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105624,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-142"},"level":0} {"tag":"dap.send","timestamp":1588425105625,"metadata":{"connectionId":1,"message":{"seq":3245,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-141","path":"wasm/wasm-001b65c2/wasm-001b65c2-141","sourceReference":2081408438}}}},"level":0} {"tag":"dap.send","timestamp":1588425105625,"metadata":{"connectionId":1,"message":{"seq":3246,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-142","path":"wasm/wasm-001b65c2/wasm-001b65c2-142","sourceReference":703795002}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105625,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-143"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105625,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-144"},"level":0} {"tag":"dap.send","timestamp":1588425105626,"metadata":{"connectionId":1,"message":{"seq":3247,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-143","path":"wasm/wasm-001b65c2/wasm-001b65c2-143","sourceReference":1220740114}}}},"level":0} {"tag":"dap.send","timestamp":1588425105626,"metadata":{"connectionId":1,"message":{"seq":3248,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-144","path":"wasm/wasm-001b65c2/wasm-001b65c2-144","sourceReference":304082957}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105626,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/process.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105627,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105627,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/process.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/process.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/process.ts","sourceMapSources":["vs/base/common/process.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105627,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-145"},"level":0} {"tag":"dap.send","timestamp":1588425105627,"metadata":{"connectionId":2,"message":{"seq":41,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105627,"metadata":{"connectionId":2,"message":{"seq":42,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/process.js","path":"/Users/roblou/code/vscode/out/vs/base/common/process.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105627,"metadata":{"connectionId":1,"message":{"seq":3249,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-145","path":"wasm/wasm-001b65c2/wasm-001b65c2-145","sourceReference":427483528}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105628,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-146"},"level":0} {"tag":"dap.send","timestamp":1588425105628,"metadata":{"connectionId":1,"message":{"seq":3250,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-146","path":"wasm/wasm-001b65c2/wasm-001b65c2-146","sourceReference":1666884028}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105628,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-147"},"level":0} {"tag":"dap.send","timestamp":1588425105629,"metadata":{"connectionId":1,"message":{"seq":3251,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-147","path":"wasm/wasm-001b65c2/wasm-001b65c2-147","sourceReference":1228130377}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105634,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-148"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105634,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-149"},"level":0} {"tag":"dap.send","timestamp":1588425105634,"metadata":{"connectionId":1,"message":{"seq":3252,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-148","path":"wasm/wasm-001b65c2/wasm-001b65c2-148","sourceReference":1773596405}}}},"level":0} {"tag":"dap.send","timestamp":1588425105634,"metadata":{"connectionId":1,"message":{"seq":3253,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-149","path":"wasm/wasm-001b65c2/wasm-001b65c2-149","sourceReference":835067251}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105634,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105635,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105635,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/position.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","sourceMapSources":["vs/editor/common/core/position.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105635,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-150"},"level":0} {"tag":"dap.send","timestamp":1588425105635,"metadata":{"connectionId":2,"message":{"seq":43,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105635,"metadata":{"connectionId":2,"message":{"seq":44,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105636,"metadata":{"connectionId":1,"message":{"seq":3254,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-150","path":"wasm/wasm-001b65c2/wasm-001b65c2-150","sourceReference":1127392827}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105636,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-151"},"level":0} {"tag":"dap.send","timestamp":1588425105637,"metadata":{"connectionId":1,"message":{"seq":3255,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-151","path":"wasm/wasm-001b65c2/wasm-001b65c2-151","sourceReference":2112237727}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105638,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-152"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105638,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-153"},"level":0} {"tag":"dap.send","timestamp":1588425105638,"metadata":{"connectionId":1,"message":{"seq":3256,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-152","path":"wasm/wasm-001b65c2/wasm-001b65c2-152","sourceReference":1700538927}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105639,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-154"},"level":0} {"tag":"dap.send","timestamp":1588425105639,"metadata":{"connectionId":1,"message":{"seq":3257,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-153","path":"wasm/wasm-001b65c2/wasm-001b65c2-153","sourceReference":1415859238}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105639,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105639,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105639,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/range.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","sourceMapSources":["vs/editor/common/core/range.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105640,"metadata":{"connectionId":1,"message":{"seq":3258,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-154","path":"wasm/wasm-001b65c2/wasm-001b65c2-154","sourceReference":801480641}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105640,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-155"},"level":0} {"tag":"dap.send","timestamp":1588425105640,"metadata":{"connectionId":2,"message":{"seq":45,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105640,"metadata":{"connectionId":2,"message":{"seq":46,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105640,"metadata":{"connectionId":1,"message":{"seq":3259,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-155","path":"wasm/wasm-001b65c2/wasm-001b65c2-155","sourceReference":1975104217}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105641,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-156"},"level":0} {"tag":"dap.send","timestamp":1588425105641,"metadata":{"connectionId":1,"message":{"seq":3260,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-156","path":"wasm/wasm-001b65c2/wasm-001b65c2-156","sourceReference":1963261078}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105641,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-157"},"level":0} {"tag":"dap.send","timestamp":1588425105642,"metadata":{"connectionId":1,"message":{"seq":3261,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-157","path":"wasm/wasm-001b65c2/wasm-001b65c2-157","sourceReference":1313582600}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105642,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-158"},"level":0} {"tag":"dap.send","timestamp":1588425105643,"metadata":{"connectionId":1,"message":{"seq":3262,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-158","path":"wasm/wasm-001b65c2/wasm-001b65c2-158","sourceReference":1039981746}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105643,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-159"},"level":0} {"tag":"dap.send","timestamp":1588425105644,"metadata":{"connectionId":1,"message":{"seq":3263,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-159","path":"wasm/wasm-001b65c2/wasm-001b65c2-159","sourceReference":676333030}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105644,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105644,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105644,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/diff/diffComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","sourceMapSources":["vs/editor/common/diff/diffComputer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105645,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-160"},"level":0} {"tag":"dap.send","timestamp":1588425105645,"metadata":{"connectionId":2,"message":{"seq":47,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105645,"metadata":{"connectionId":2,"message":{"seq":48,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105645,"metadata":{"connectionId":1,"message":{"seq":3264,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-160","path":"wasm/wasm-001b65c2/wasm-001b65c2-160","sourceReference":1403024548}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105645,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-161"},"level":0} {"tag":"dap.send","timestamp":1588425105646,"metadata":{"connectionId":1,"message":{"seq":3265,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-161","path":"wasm/wasm-001b65c2/wasm-001b65c2-161","sourceReference":698296666}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105650,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-162"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105650,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-163"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105651,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-164"},"level":0} {"tag":"dap.send","timestamp":1588425105651,"metadata":{"connectionId":1,"message":{"seq":3266,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-162","path":"wasm/wasm-001b65c2/wasm-001b65c2-162","sourceReference":1606648945}}}},"level":0} {"tag":"dap.send","timestamp":1588425105651,"metadata":{"connectionId":1,"message":{"seq":3267,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-163","path":"wasm/wasm-001b65c2/wasm-001b65c2-163","sourceReference":2049528977}}}},"level":0} {"tag":"dap.send","timestamp":1588425105651,"metadata":{"connectionId":1,"message":{"seq":3268,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-164","path":"wasm/wasm-001b65c2/wasm-001b65c2-164","sourceReference":2072081106}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105652,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105652,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105652,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/mirrorTextModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","sourceMapSources":["vs/editor/common/model/mirrorTextModel.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105652,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-165"},"level":0} {"tag":"dap.send","timestamp":1588425105652,"metadata":{"connectionId":2,"message":{"seq":49,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105653,"metadata":{"connectionId":2,"message":{"seq":50,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105653,"metadata":{"connectionId":1,"message":{"seq":3269,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-165","path":"wasm/wasm-001b65c2/wasm-001b65c2-165","sourceReference":4684838}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105653,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-166"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105654,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-167"},"level":0} {"tag":"dap.send","timestamp":1588425105654,"metadata":{"connectionId":1,"message":{"seq":3270,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-166","path":"wasm/wasm-001b65c2/wasm-001b65c2-166","sourceReference":1898400407}}}},"level":0} {"tag":"dap.send","timestamp":1588425105654,"metadata":{"connectionId":1,"message":{"seq":3271,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-167","path":"wasm/wasm-001b65c2/wasm-001b65c2-167","sourceReference":1849617727}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105655,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-168"},"level":0} {"tag":"dap.send","timestamp":1588425105655,"metadata":{"connectionId":1,"message":{"seq":3272,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-168","path":"wasm/wasm-001b65c2/wasm-001b65c2-168","sourceReference":554149870}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105655,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-169"},"level":0} {"tag":"dap.send","timestamp":1588425105656,"metadata":{"connectionId":1,"message":{"seq":3273,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-169","path":"wasm/wasm-001b65c2/wasm-001b65c2-169","sourceReference":401414009}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105656,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105656,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105656,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/prefixSumComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","sourceMapSources":["vs/editor/common/viewModel/prefixSumComputer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105657,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-170"},"level":0} {"tag":"dap.send","timestamp":1588425105657,"metadata":{"connectionId":2,"message":{"seq":51,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105657,"metadata":{"connectionId":2,"message":{"seq":52,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105657,"metadata":{"connectionId":1,"message":{"seq":3274,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-170","path":"wasm/wasm-001b65c2/wasm-001b65c2-170","sourceReference":1087333843}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105658,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-171"},"level":0} {"tag":"dap.send","timestamp":1588425105658,"metadata":{"connectionId":1,"message":{"seq":3275,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-171","path":"wasm/wasm-001b65c2/wasm-001b65c2-171","sourceReference":343852134}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105658,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-172"},"level":0} {"tag":"dap.send","timestamp":1588425105659,"metadata":{"connectionId":1,"message":{"seq":3276,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-172","path":"wasm/wasm-001b65c2/wasm-001b65c2-172","sourceReference":1124862424}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105659,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-173"},"level":0} {"tag":"dap.send","timestamp":1588425105660,"metadata":{"connectionId":1,"message":{"seq":3277,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-173","path":"wasm/wasm-001b65c2/wasm-001b65c2-173","sourceReference":199438891}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105660,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-174"},"level":0} {"tag":"dap.send","timestamp":1588425105661,"metadata":{"connectionId":1,"message":{"seq":3278,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-174","path":"wasm/wasm-001b65c2/wasm-001b65c2-174","sourceReference":646257751}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105661,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105661,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105662,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uint.ts","sourceMapSources":["vs/base/common/uint.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105662,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-175"},"level":0} {"tag":"dap.send","timestamp":1588425105662,"metadata":{"connectionId":2,"message":{"seq":53,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105662,"metadata":{"connectionId":2,"message":{"seq":54,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uint.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uint.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105662,"metadata":{"connectionId":1,"message":{"seq":3279,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-175","path":"wasm/wasm-001b65c2/wasm-001b65c2-175","sourceReference":18210453}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105662,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-176"},"level":0} {"tag":"dap.send","timestamp":1588425105663,"metadata":{"connectionId":1,"message":{"seq":3280,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-176","path":"wasm/wasm-001b65c2/wasm-001b65c2-176","sourceReference":1762385384}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105663,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-177"},"level":0} {"tag":"dap.send","timestamp":1588425105664,"metadata":{"connectionId":1,"message":{"seq":3281,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-177","path":"wasm/wasm-001b65c2/wasm-001b65c2-177","sourceReference":2082534309}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105664,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-178"},"level":0} {"tag":"dap.send","timestamp":1588425105665,"metadata":{"connectionId":1,"message":{"seq":3282,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-178","path":"wasm/wasm-001b65c2/wasm-001b65c2-178","sourceReference":1839726335}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105665,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-179"},"level":0} {"tag":"dap.send","timestamp":1588425105666,"metadata":{"connectionId":1,"message":{"seq":3283,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-179","path":"wasm/wasm-001b65c2/wasm-001b65c2-179","sourceReference":2020752712}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105667,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105667,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105667,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/wordHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","sourceMapSources":["vs/editor/common/model/wordHelper.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105667,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-180"},"level":0} {"tag":"dap.send","timestamp":1588425105667,"metadata":{"connectionId":2,"message":{"seq":55,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105667,"metadata":{"connectionId":2,"message":{"seq":56,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105667,"metadata":{"connectionId":1,"message":{"seq":3284,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-180","path":"wasm/wasm-001b65c2/wasm-001b65c2-180","sourceReference":1832778379}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105668,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-181"},"level":0} {"tag":"dap.send","timestamp":1588425105668,"metadata":{"connectionId":1,"message":{"seq":3285,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-181","path":"wasm/wasm-001b65c2/wasm-001b65c2-181","sourceReference":2134541756}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105668,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-182"},"level":0} {"tag":"dap.send","timestamp":1588425105669,"metadata":{"connectionId":1,"message":{"seq":3286,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-182","path":"wasm/wasm-001b65c2/wasm-001b65c2-182","sourceReference":1548594850}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105669,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-183"},"level":0} {"tag":"dap.send","timestamp":1588425105670,"metadata":{"connectionId":1,"message":{"seq":3287,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-183","path":"wasm/wasm-001b65c2/wasm-001b65c2-183","sourceReference":1897781212}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105670,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-184"},"level":0} {"tag":"dap.send","timestamp":1588425105671,"metadata":{"connectionId":1,"message":{"seq":3288,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-184","path":"wasm/wasm-001b65c2/wasm-001b65c2-184","sourceReference":1866311649}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105671,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105671,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105671,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/linkComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","sourceMapSources":["vs/editor/common/modes/linkComputer.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105672,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-185"},"level":0} {"tag":"dap.send","timestamp":1588425105672,"metadata":{"connectionId":2,"message":{"seq":57,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105672,"metadata":{"connectionId":2,"message":{"seq":58,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105672,"metadata":{"connectionId":1,"message":{"seq":3289,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-185","path":"wasm/wasm-001b65c2/wasm-001b65c2-185","sourceReference":1961009334}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105672,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-186"},"level":0} {"tag":"dap.send","timestamp":1588425105673,"metadata":{"connectionId":1,"message":{"seq":3290,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-186","path":"wasm/wasm-001b65c2/wasm-001b65c2-186","sourceReference":161288811}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105673,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-187"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105675,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-188"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105675,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-189"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105677,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105677,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105677,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/characterClassifier.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","sourceMapSources":["vs/editor/common/core/characterClassifier.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105677,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-190"},"level":0} {"tag":"dap.send","timestamp":1588425105677,"metadata":{"connectionId":2,"message":{"seq":59,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105679,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-191"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105681,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-192"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105681,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-193"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105683,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-194"},"level":0} {"tag":"dap.send","timestamp":1588425105684,"metadata":{"connectionId":1,"message":{"seq":3291,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-187","path":"wasm/wasm-001b65c2/wasm-001b65c2-187","sourceReference":906379766}}}},"level":0} {"tag":"dap.send","timestamp":1588425105684,"metadata":{"connectionId":1,"message":{"seq":3292,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-188","path":"wasm/wasm-001b65c2/wasm-001b65c2-188","sourceReference":1033999587}}}},"level":0} {"tag":"dap.send","timestamp":1588425105684,"metadata":{"connectionId":1,"message":{"seq":3293,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-189","path":"wasm/wasm-001b65c2/wasm-001b65c2-189","sourceReference":1502330367}}}},"level":0} {"tag":"dap.send","timestamp":1588425105684,"metadata":{"connectionId":1,"message":{"seq":3294,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-190","path":"wasm/wasm-001b65c2/wasm-001b65c2-190","sourceReference":1898464616}}}},"level":0} {"tag":"dap.send","timestamp":1588425105684,"metadata":{"connectionId":1,"message":{"seq":3295,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-191","path":"wasm/wasm-001b65c2/wasm-001b65c2-191","sourceReference":1835387674}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105685,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105685,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105685,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/inplaceReplaceSupport.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","sourceMapSources":["vs/editor/common/modes/supports/inplaceReplaceSupport.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105685,"metadata":{"connectionId":1,"message":{"seq":3296,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-192","path":"wasm/wasm-001b65c2/wasm-001b65c2-192","sourceReference":524508324}}}},"level":0} {"tag":"dap.send","timestamp":1588425105685,"metadata":{"connectionId":1,"message":{"seq":3297,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-193","path":"wasm/wasm-001b65c2/wasm-001b65c2-193","sourceReference":1743009118}}}},"level":0} {"tag":"dap.send","timestamp":1588425105685,"metadata":{"connectionId":1,"message":{"seq":3298,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-194","path":"wasm/wasm-001b65c2/wasm-001b65c2-194","sourceReference":1089700975}}}},"level":0} {"tag":"dap.send","timestamp":1588425105685,"metadata":{"connectionId":2,"message":{"seq":60,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105685,"metadata":{"connectionId":2,"message":{"seq":61,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105686,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-195"},"level":0} {"tag":"dap.send","timestamp":1588425105687,"metadata":{"connectionId":2,"message":{"seq":62,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105688,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-196"},"level":0} {"tag":"dap.send","timestamp":1588425105689,"metadata":{"connectionId":1,"message":{"seq":3299,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-195","path":"wasm/wasm-001b65c2/wasm-001b65c2-195","sourceReference":573441847}}}},"level":0} {"tag":"dap.send","timestamp":1588425105689,"metadata":{"connectionId":1,"message":{"seq":3300,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-196","path":"wasm/wasm-001b65c2/wasm-001b65c2-196","sourceReference":904591418}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105689,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-197"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105701,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-198"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105701,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105702,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105702,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standalone/standaloneBase.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","sourceMapSources":["vs/editor/common/standalone/standaloneBase.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105702,"metadata":{"connectionId":1,"message":{"seq":3301,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-197","path":"wasm/wasm-001b65c2/wasm-001b65c2-197","sourceReference":1086329643}}}},"level":0} {"tag":"dap.send","timestamp":1588425105702,"metadata":{"connectionId":1,"message":{"seq":3302,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-198","path":"wasm/wasm-001b65c2/wasm-001b65c2-198","sourceReference":1204925336}}}},"level":0} {"tag":"dap.send","timestamp":1588425105702,"metadata":{"connectionId":2,"message":{"seq":63,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105703,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-199"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105703,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-200"},"level":0} {"tag":"dap.send","timestamp":1588425105703,"metadata":{"connectionId":2,"message":{"seq":64,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105704,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-201"},"level":0} {"tag":"dap.send","timestamp":1588425105704,"metadata":{"connectionId":1,"message":{"seq":3303,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-199","path":"wasm/wasm-001b65c2/wasm-001b65c2-199","sourceReference":1788490086}}}},"level":0} {"tag":"dap.send","timestamp":1588425105704,"metadata":{"connectionId":1,"message":{"seq":3304,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-200","path":"wasm/wasm-001b65c2/wasm-001b65c2-200","sourceReference":627752051}}}},"level":0} {"tag":"dap.send","timestamp":1588425105704,"metadata":{"connectionId":1,"message":{"seq":3305,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-201","path":"wasm/wasm-001b65c2/wasm-001b65c2-201","sourceReference":1917531505}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105705,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-202"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105706,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-203"},"level":0} {"tag":"dap.send","timestamp":1588425105706,"metadata":{"connectionId":1,"message":{"seq":3306,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-202","path":"wasm/wasm-001b65c2/wasm-001b65c2-202","sourceReference":1321082160}}}},"level":0} {"tag":"dap.send","timestamp":1588425105706,"metadata":{"connectionId":1,"message":{"seq":3307,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-203","path":"wasm/wasm-001b65c2/wasm-001b65c2-203","sourceReference":1766395266}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105706,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-204"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105707,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105707,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105707,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/cancellation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","sourceMapSources":["vs/base/common/cancellation.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105708,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-205"},"level":0} {"tag":"dap.send","timestamp":1588425105708,"metadata":{"connectionId":2,"message":{"seq":65,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105709,"metadata":{"connectionId":1,"message":{"seq":3308,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-204","path":"wasm/wasm-001b65c2/wasm-001b65c2-204","sourceReference":754149009}}}},"level":0} {"tag":"dap.send","timestamp":1588425105709,"metadata":{"connectionId":2,"message":{"seq":66,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js","path":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105709,"metadata":{"connectionId":1,"message":{"seq":3309,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-205","path":"wasm/wasm-001b65c2/wasm-001b65c2-205","sourceReference":2120570522}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105709,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-206"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105710,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-207"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105711,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-208"},"level":0} {"tag":"dap.send","timestamp":1588425105711,"metadata":{"connectionId":1,"message":{"seq":3310,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-206","path":"wasm/wasm-001b65c2/wasm-001b65c2-206","sourceReference":2097501654}}}},"level":0} {"tag":"dap.send","timestamp":1588425105711,"metadata":{"connectionId":1,"message":{"seq":3311,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-207","path":"wasm/wasm-001b65c2/wasm-001b65c2-207","sourceReference":172566694}}}},"level":0} {"tag":"dap.send","timestamp":1588425105711,"metadata":{"connectionId":1,"message":{"seq":3312,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-208","path":"wasm/wasm-001b65c2/wasm-001b65c2-208","sourceReference":2042769839}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105712,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-209"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105712,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/event.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105712,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105712,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/event.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/event.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceMapSources":["vs/base/common/event.ts"]},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105714,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-210"},"level":0} {"tag":"dap.send","timestamp":1588425105714,"metadata":{"connectionId":2,"message":{"seq":67,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105715,"metadata":{"connectionId":1,"message":{"seq":3313,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-209","path":"wasm/wasm-001b65c2/wasm-001b65c2-209","sourceReference":1676770113}}}},"level":0} {"tag":"dap.send","timestamp":1588425105715,"metadata":{"connectionId":2,"message":{"seq":68,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/event.js","path":"/Users/roblou/code/vscode/out/vs/base/common/event.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105715,"metadata":{"connectionId":1,"message":{"seq":3314,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-210","path":"wasm/wasm-001b65c2/wasm-001b65c2-210","sourceReference":1871107539}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105717,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-211"},"level":0} {"tag":"dap.send","timestamp":1588425105729,"metadata":{"connectionId":1,"message":{"seq":3315,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-211","path":"wasm/wasm-001b65c2/wasm-001b65c2-211","sourceReference":1125796990}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105729,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-212"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105729,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-213"},"level":0} {"tag":"dap.send","timestamp":1588425105730,"metadata":{"connectionId":1,"message":{"seq":3316,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-212","path":"wasm/wasm-001b65c2/wasm-001b65c2-212","sourceReference":2088547480}}}},"level":0} {"tag":"dap.send","timestamp":1588425105730,"metadata":{"connectionId":1,"message":{"seq":3317,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-213","path":"wasm/wasm-001b65c2/wasm-001b65c2-213","sourceReference":714304693}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105731,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-214"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105731,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105732,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105732,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/linkedList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","sourceMapSources":["vs/base/common/linkedList.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105732,"metadata":{"connectionId":1,"message":{"seq":3318,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-214","path":"wasm/wasm-001b65c2/wasm-001b65c2-214","sourceReference":1400192817}}}},"level":0} {"tag":"dap.send","timestamp":1588425105732,"metadata":{"connectionId":2,"message":{"seq":69,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js","path":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105732,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-215"},"level":0} {"tag":"dap.send","timestamp":1588425105732,"metadata":{"connectionId":2,"message":{"seq":70,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105733,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-216"},"level":0} {"tag":"dap.send","timestamp":1588425105734,"metadata":{"connectionId":1,"message":{"seq":3319,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-215","path":"wasm/wasm-001b65c2/wasm-001b65c2-215","sourceReference":1378855017}}}},"level":0} {"tag":"dap.send","timestamp":1588425105734,"metadata":{"connectionId":1,"message":{"seq":3320,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-216","path":"wasm/wasm-001b65c2/wasm-001b65c2-216","sourceReference":29314142}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105735,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-217"},"level":0} {"tag":"dap.send","timestamp":1588425105736,"metadata":{"connectionId":1,"message":{"seq":3321,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-217","path":"wasm/wasm-001b65c2/wasm-001b65c2-217","sourceReference":43095118}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105737,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-218"},"level":0} {"tag":"dap.send","timestamp":1588425105738,"metadata":{"connectionId":1,"message":{"seq":3322,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-218","path":"wasm/wasm-001b65c2/wasm-001b65c2-218","sourceReference":559928296}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105738,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-219"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105739,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105739,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105739,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/keyCodes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","sourceMapSources":["vs/base/common/keyCodes.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105739,"metadata":{"connectionId":1,"message":{"seq":3323,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-219","path":"wasm/wasm-001b65c2/wasm-001b65c2-219","sourceReference":1805488866}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105739,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-220"},"level":0} {"tag":"dap.send","timestamp":1588425105740,"metadata":{"connectionId":2,"message":{"seq":71,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105740,"metadata":{"connectionId":2,"message":{"seq":72,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","path":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105740,"metadata":{"connectionId":1,"message":{"seq":3324,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-220","path":"wasm/wasm-001b65c2/wasm-001b65c2-220","sourceReference":486997584}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105740,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-221"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105741,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-222"},"level":0} {"tag":"dap.send","timestamp":1588425105742,"metadata":{"connectionId":1,"message":{"seq":3325,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-221","path":"wasm/wasm-001b65c2/wasm-001b65c2-221","sourceReference":1425206816}}}},"level":0} {"tag":"dap.send","timestamp":1588425105742,"metadata":{"connectionId":1,"message":{"seq":3326,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-222","path":"wasm/wasm-001b65c2/wasm-001b65c2-222","sourceReference":2045030015}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105742,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-223"},"level":0} {"tag":"dap.send","timestamp":1588425105743,"metadata":{"connectionId":1,"message":{"seq":3327,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-223","path":"wasm/wasm-001b65c2/wasm-001b65c2-223","sourceReference":179999239}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105743,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-224"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105744,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105744,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105744,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/selection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","sourceMapSources":["vs/editor/common/core/selection.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105744,"metadata":{"connectionId":1,"message":{"seq":3328,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-224","path":"wasm/wasm-001b65c2/wasm-001b65c2-224","sourceReference":1912369830}}}},"level":0} {"tag":"dap.send","timestamp":1588425105744,"metadata":{"connectionId":2,"message":{"seq":73,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105745,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-225"},"level":0} {"tag":"dap.send","timestamp":1588425105745,"metadata":{"connectionId":2,"message":{"seq":74,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105745,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-226"},"level":0} {"tag":"dap.send","timestamp":1588425105746,"metadata":{"connectionId":1,"message":{"seq":3329,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-225","path":"wasm/wasm-001b65c2/wasm-001b65c2-225","sourceReference":1498121967}}}},"level":0} {"tag":"dap.send","timestamp":1588425105746,"metadata":{"connectionId":1,"message":{"seq":3330,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-226","path":"wasm/wasm-001b65c2/wasm-001b65c2-226","sourceReference":778127902}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105746,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-227"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105747,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-228"},"level":0} {"tag":"dap.send","timestamp":1588425105747,"metadata":{"connectionId":1,"message":{"seq":3331,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-227","path":"wasm/wasm-001b65c2/wasm-001b65c2-227","sourceReference":1270385676}}}},"level":0} {"tag":"dap.send","timestamp":1588425105747,"metadata":{"connectionId":1,"message":{"seq":3332,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-228","path":"wasm/wasm-001b65c2/wasm-001b65c2-228","sourceReference":1670923625}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105748,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-229"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105749,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105749,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105749,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/token.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","sourceMapSources":["vs/editor/common/core/token.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105749,"metadata":{"connectionId":1,"message":{"seq":3333,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-229","path":"wasm/wasm-001b65c2/wasm-001b65c2-229","sourceReference":39961470}}}},"level":0} {"tag":"dap.send","timestamp":1588425105749,"metadata":{"connectionId":2,"message":{"seq":75,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105750,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-230"},"level":0} {"tag":"dap.send","timestamp":1588425105750,"metadata":{"connectionId":2,"message":{"seq":76,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105751,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-231"},"level":0} {"tag":"dap.send","timestamp":1588425105751,"metadata":{"connectionId":1,"message":{"seq":3334,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-230","path":"wasm/wasm-001b65c2/wasm-001b65c2-230","sourceReference":1995249921}}}},"level":0} {"tag":"dap.send","timestamp":1588425105751,"metadata":{"connectionId":1,"message":{"seq":3335,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-231","path":"wasm/wasm-001b65c2/wasm-001b65c2-231","sourceReference":1119483291}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105752,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-232"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105752,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-233"},"level":0} {"tag":"dap.send","timestamp":1588425105753,"metadata":{"connectionId":1,"message":{"seq":3336,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-232","path":"wasm/wasm-001b65c2/wasm-001b65c2-232","sourceReference":136216471}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105753,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-234"},"level":0} {"tag":"dap.send","timestamp":1588425105753,"metadata":{"connectionId":1,"message":{"seq":3337,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-233","path":"wasm/wasm-001b65c2/wasm-001b65c2-233","sourceReference":1187342053}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105753,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425105754,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105754,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standalone/standaloneEnums.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","sourceMapSources":["vs/editor/common/standalone/standaloneEnums.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425105754,"metadata":{"connectionId":1,"message":{"seq":3338,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-234","path":"wasm/wasm-001b65c2/wasm-001b65c2-234","sourceReference":1629474870}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105756,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-235"},"level":0} {"tag":"dap.send","timestamp":1588425105756,"metadata":{"connectionId":2,"message":{"seq":77,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105756,"metadata":{"connectionId":2,"message":{"seq":78,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425105756,"metadata":{"connectionId":1,"message":{"seq":3339,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-235","path":"wasm/wasm-001b65c2/wasm-001b65c2-235","sourceReference":999665343}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105757,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-236"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105757,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-237"},"level":0} {"tag":"dap.send","timestamp":1588425105758,"metadata":{"connectionId":1,"message":{"seq":3340,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-236","path":"wasm/wasm-001b65c2/wasm-001b65c2-236","sourceReference":1692430958}}}},"level":0} {"tag":"dap.send","timestamp":1588425105758,"metadata":{"connectionId":1,"message":{"seq":3341,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-237","path":"wasm/wasm-001b65c2/wasm-001b65c2-237","sourceReference":977827552}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105758,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-238"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105758,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-239"},"level":0} {"tag":"dap.send","timestamp":1588425105759,"metadata":{"connectionId":1,"message":{"seq":3342,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-238","path":"wasm/wasm-001b65c2/wasm-001b65c2-238","sourceReference":1369133905}}}},"level":0} {"tag":"dap.send","timestamp":1588425105759,"metadata":{"connectionId":1,"message":{"seq":3343,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-239","path":"wasm/wasm-001b65c2/wasm-001b65c2-239","sourceReference":1997198049}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105759,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-240"},"level":0} {"tag":"dap.send","timestamp":1588425105760,"metadata":{"connectionId":1,"message":{"seq":3344,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-240","path":"wasm/wasm-001b65c2/wasm-001b65c2-240","sourceReference":703547876}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105760,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-241"},"level":0} {"tag":"dap.send","timestamp":1588425105768,"metadata":{"connectionId":1,"message":{"seq":3345,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-241","path":"wasm/wasm-001b65c2/wasm-001b65c2-241","sourceReference":1216497306}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105769,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-242"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105769,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-243"},"level":0} {"tag":"dap.send","timestamp":1588425105769,"metadata":{"connectionId":1,"message":{"seq":3346,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-242","path":"wasm/wasm-001b65c2/wasm-001b65c2-242","sourceReference":1416526000}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105769,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-244"},"level":0} {"tag":"dap.send","timestamp":1588425105769,"metadata":{"connectionId":1,"message":{"seq":3347,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-243","path":"wasm/wasm-001b65c2/wasm-001b65c2-243","sourceReference":1061233546}}}},"level":0} {"tag":"dap.send","timestamp":1588425105770,"metadata":{"connectionId":1,"message":{"seq":3348,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-244","path":"wasm/wasm-001b65c2/wasm-001b65c2-244","sourceReference":632184440}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105770,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-245"},"level":0} {"tag":"dap.send","timestamp":1588425105771,"metadata":{"connectionId":1,"message":{"seq":3349,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-245","path":"wasm/wasm-001b65c2/wasm-001b65c2-245","sourceReference":628146208}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105771,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-246"},"level":0} {"tag":"dap.send","timestamp":1588425105771,"metadata":{"connectionId":1,"message":{"seq":3350,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-246","path":"wasm/wasm-001b65c2/wasm-001b65c2-246","sourceReference":558066876}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105771,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-247"},"level":0} {"tag":"dap.send","timestamp":1588425105772,"metadata":{"connectionId":1,"message":{"seq":3351,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-247","path":"wasm/wasm-001b65c2/wasm-001b65c2-247","sourceReference":1636110890}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105772,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-248"},"level":0} {"tag":"dap.send","timestamp":1588425105773,"metadata":{"connectionId":1,"message":{"seq":3352,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-248","path":"wasm/wasm-001b65c2/wasm-001b65c2-248","sourceReference":287176348}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105773,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-249"},"level":0} {"tag":"dap.send","timestamp":1588425105773,"metadata":{"connectionId":1,"message":{"seq":3353,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-249","path":"wasm/wasm-001b65c2/wasm-001b65c2-249","sourceReference":143774090}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105774,"message":"Creating source from url","metadata":{"inputUrl":"wasm://wasm/wasm-001b65c2/wasm-001b65c2-250"},"level":0} {"tag":"dap.send","timestamp":1588425105775,"metadata":{"connectionId":1,"message":{"seq":3354,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"wasm/wasm-001b65c2/wasm-001b65c2-250","path":"wasm/wasm-001b65c2/wasm-001b65c2-250","sourceReference":1408263915}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425105777,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/node_modules/keytar/lib/keytar.js","absolutePath":"/Users/roblou/code/vscode/node_modules/keytar/lib/keytar.js"},"level":0} {"tag":"dap.send","timestamp":1588425105777,"metadata":{"connectionId":1,"message":{"seq":3355,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/node_modules/keytar/lib/keytar.js","path":"/Users/roblou/code/vscode/node_modules/keytar/lib/keytar.js","sourceReference":2005808961}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425106244,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"31CEB9F1109E100C9FF4745BCF1467E4","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":false,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425106244,"metadata":{"connectionId":0,"message":{"method":"Target.detachedFromTarget","params":{"sessionId":"BE516397D0458F360AA29DDC69F15F11","targetId":"31CEB9F1109E100C9FF4745BCF1467E4"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425106245,"metadata":{"connectionId":0,"message":{"method":"Target.targetDestroyed","params":{"targetId":"31CEB9F1109E100C9FF4745BCF1467E4"},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425106245,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.191","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/letterpress-dark.svg","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"Low","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547788.336437,"wallTime":1588425106.214748,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"doHideActiveEditorPane","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":155,"columnNumber":32},{"functionName":"closeEditor","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":167,"columnNumber":25},{"functionName":"doCloseActiveEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":911,"columnNumber":43},{"functionName":"doCloseEditors","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":1087,"columnNumber":25},{"functionName":"closeEditors","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":1049,"columnNumber":21}],"parent":{"description":"async function","callFrames":[{"functionName":"closeEditors","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":1044,"columnNumber":40},{"functionName":"","scriptId":"844","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js","lineNumber":458,"columnNumber":37},{"functionName":"handler","scriptId":"844","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorCommands.js","lineNumber":452,"columnNumber":44},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"_tryExecuteCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":74,"columnNumber":62},{"functionName":"","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":50}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}}}},"type":"Image","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425106245,"metadata":{"connectionId":0,"message":{"method":"Network.resourceChangedPriority","params":{"requestId":"7822.191","newPriority":"High","timestamp":547788.344933},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425106249,"metadata":{"connectionId":2,"message":{"seq":79,"type":"event","event":"thread","body":{"reason":"exited","threadId":1}}},"level":0} {"tag":"dap.send","timestamp":1588425106249,"metadata":{"connectionId":2,"message":{"seq":80,"type":"event","event":"terminated","body":{}}},"level":0} {"tag":"dap.receive","timestamp":1588425106261,"metadata":{"connectionId":2,"message":{"command":"loadedSources","type":"request","seq":8}},"level":0} {"tag":"dap.send","timestamp":1588425106262,"metadata":{"connectionId":2,"message":{"seq":81,"type":"response","request_seq":8,"command":"loadedSources","success":true,"body":{"sources":[]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425106263,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.191","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547788.370311,"type":"Image","response":{"url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/media/letterpress-dark.svg","status":200,"statusText":"OK","headers":{"Content-Type":"image/svg+xml"},"mimeType":"image/svg+xml","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425106264,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.191","timestamp":547788.370373,"dataLength":1917,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425106264,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.191","timestamp":547788.370445,"encodedDataLength":1917,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425106264,"metadata":{"connectionId":2,"message":{"command":"disconnect","arguments":{"restart":false},"type":"request","seq":9}},"level":0} {"tag":"dap.send","timestamp":1588425106264,"metadata":{"connectionId":2,"message":{"seq":82,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/breakpointStats","data":{"set":0,"verified":0,"hit":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425106267,"metadata":{"connectionId":2,"message":{"seq":83,"type":"response","request_seq":9,"command":"disconnect","success":true,"body":{}}},"level":0} {"tag":"dap.send","timestamp":1588425106327,"metadata":{"connectionId":0,"message":{"seq":25,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081146.324507:INFO:CONSOLE(104)] \"%c[Extension Host] %c/Users/roblou/code/notebook-extension-samples/notebook-renderer %c(at activate (/Users/roblou/code/notebook-extension-samples/notebook-renderer/dist/extension.js:101:13)) color: blue color: color: grey\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425106327,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %c/Users/roblou/code/notebook-extension-samples/notebook-renderer %c(at activate (/Users/roblou/code/notebook-extension-samples/notebook-renderer/dist/extension.js:101:13))"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"color: grey"}],"executionContextId":1,"timestamp":1588425106318.743,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425106340,"metadata":{"connectionId":1,"message":{"seq":3356,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0m/Users/roblou/code/notebook-extension-samples/notebook-renderer \u001b[0m\u001b[38;5;244m(at activate (/Users/roblou/code/notebook-extension-samples/notebook-renderer/dist/extension.js:101:13))\u001b[0m\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"dap.send","timestamp":1588425106340,"metadata":{"connectionId":0,"message":{"seq":26,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081146.339503:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: vscode-userdata:/Users/roblou/Library/Application%20Support/code-oss-dev/User/settings.json (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425106341,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"vscode-userdata:/Users/roblou/Library/Application%20Support/code-oss-dev/User/settings.json"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425106334.749,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425106341,"metadata":{"connectionId":1,"message":{"seq":3357,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m vscode-userdata:/Users/roblou/Library/Application%20Support/code-oss-dev/User/settings.json (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107207,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.192","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","urlFragment":"#editorWorkerService","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"High","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.327202,"wallTime":1588425107.205477,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"getWorker","scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","lineNumber":23,"columnNumber":19},{"functionName":"WebWorker","scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","lineNumber":60,"columnNumber":36},{"functionName":"create","scriptId":"613","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/defaultWorkerFactory.js","lineNumber":104,"columnNumber":23},{"functionName":"SimpleWorkerClient","scriptId":"612","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":128,"columnNumber":56},{"functionName":"_getOrCreateWorker","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":309,"columnNumber":50},{"functionName":"_getProxy","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":319,"columnNumber":24},{"functionName":"_withSyncedResources","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":332,"columnNumber":24},{"functionName":"computeLinks","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":353,"columnNumber":24},{"functionName":"","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":48,"columnNumber":86}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"provideLinks","scriptId":"221","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorWorkerServiceImpl.js","lineNumber":48,"columnNumber":64},{"functionName":"","scriptId":"1238","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","lineNumber":103,"columnNumber":44},{"functionName":"getLinks","scriptId":"1238","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/getLinks.js","lineNumber":102,"columnNumber":79},{"functionName":"","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":146,"columnNumber":88},{"functionName":"createCancelablePromise","scriptId":"192","url":"file:///Users/roblou/code/vscode/out/vs/base/common/async.js","lineNumber":14,"columnNumber":25},{"functionName":"beginCompute","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":146,"columnNumber":44},{"functionName":"onModelChanged","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":125,"columnNumber":21},{"functionName":"","scriptId":"655","url":"file:///Users/roblou/code/vscode/out/vs/editor/contrib/links/links.js","lineNumber":108,"columnNumber":79},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"setModel","scriptId":"626","url":"file:///Users/roblou/code/vscode/out/vs/editor/browser/widget/codeEditorWidget.js","lineNumber":257,"columnNumber":39},{"functionName":"renderBody","scriptId":"879","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js","lineNumber":607,"columnNumber":33},{"functionName":"render","scriptId":"1275","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/splitview/paneview.js","lineNumber":149,"columnNumber":21},{"functionName":"render","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":142,"columnNumber":22},{"functionName":"render","scriptId":"879","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/repositoryPane.js","lineNumber":512,"columnNumber":22},{"functionName":"onDidAddViewDescriptors","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":885,"columnNumber":25},{"functionName":"","scriptId":"734","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/views/viewPaneContainer.js","lineNumber":642,"columnNumber":100},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"add","scriptId":"808","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/common/viewContainerModel.js","lineNumber":413,"columnNumber":57},{"functionName":"addViews","scriptId":"286","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","lineNumber":472,"columnNumber":54},{"functionName":"registerGroupedViews","scriptId":"286","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","lineNumber":96,"columnNumber":25},{"functionName":"onDidRegisterViews","scriptId":"286","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","lineNumber":148,"columnNumber":21},{"functionName":"","scriptId":"286","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/views/browser/viewDescriptorService.js","lineNumber":45,"columnNumber":103},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"registerViews","scriptId":"725","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/views.js","lineNumber":100,"columnNumber":36},{"functionName":"onDidAddRepository","scriptId":"304","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","lineNumber":115,"columnNumber":73},{"functionName":"","scriptId":"304","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","lineNumber":109,"columnNumber":63},{"functionName":"create","scriptId":"304","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/scm/browser/scmViewlet.js","lineNumber":109,"columnNumber":45},{"functionName":"create","scriptId":"1273","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/panecomposite.js","lineNumber":30,"columnNumber":39},{"functionName":"showComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":121,"columnNumber":26},{"functionName":"doOpenComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":69,"columnNumber":17},{"functionName":"openComposite","scriptId":"740","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/compositePart.js","lineNumber":42,"columnNumber":24},{"functionName":"doOpenViewlet","scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","lineNumber":178,"columnNumber":28},{"functionName":"openViewlet","scriptId":"252","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/sidebar/sidebarPart.js","lineNumber":139,"columnNumber":32},{"functionName":"run","scriptId":"732","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/viewlet.js","lineNumber":132,"columnNumber":46},{"functionName":"triggerAndDisposeAction","scriptId":"355","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/actions.js","lineNumber":84,"columnNumber":37}],"parent":{"description":"async function","callFrames":[{"functionName":"triggerAndDisposeAction","scriptId":"355","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/actions.js","lineNumber":73,"columnNumber":35},{"functionName":"","scriptId":"355","url":"file:///Users/roblou/code/vscode/out/vs/workbench/common/actions.js","lineNumber":63,"columnNumber":31},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"_tryExecuteCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":74,"columnNumber":62},{"functionName":"","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":50}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}}}}},"type":"Other","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107223,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"A8585C0397D8E76238671E12CC9F8497","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":false,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107223,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"A8585C0397D8E76238671E12CC9F8497","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107223,"metadata":{"connectionId":0,"message":{"method":"Target.attachedToTarget","params":{"sessionId":"F3779EF2C7D50E03030231095B49FE9C","targetInfo":{"targetId":"A8585C0397D8E76238671E12CC9F8497","type":"worker","title":"editorWorkerService","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","attached":true,"browserContextId":"22F8B8844D7DA10880E6ADDD2F3F5B3C"},"waitingForDebugger":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107223,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.192","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547789.342719,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107224,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.192","timestamp":547789.342814,"dataLength":1604,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107224,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.192","timestamp":547789.342878,"encodedDataLength":1604,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425107225,"metadata":{"connectionId":0,"message":{"id":33,"method":"Target.setAutoAttach","params":{"autoAttach":true,"waitForDebuggerOnStart":true,"flatten":true},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107225,"metadata":{"connectionId":0,"message":{"id":34,"method":"Network.setCacheDisabled","params":{"cacheDisabled":true},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107228,"metadata":{"connectionId":0,"message":{"id":33,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107228,"metadata":{"connectionId":0,"message":{"id":34,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107297,"metadata":{"connectionId":0,"message":{"id":35,"method":"Runtime.enable","params":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107297,"metadata":{"connectionId":0,"message":{"id":36,"method":"Network.enable","params":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107297,"metadata":{"connectionId":0,"message":{"id":37,"method":"Debugger.enable","params":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"id":38,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":32},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"id":39,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"id":40,"method":"Debugger.setInstrumentationBreakpoint","params":{"instrumentation":"beforeScriptWithSourceMapExecution"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107298,"message":"Dequeue messages","metadata":{"message":[]},"level":0} {"tag":"cdp.receive","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","name":"editorWorkerService"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"id":35,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"id":36,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107298,"metadata":{"connectionId":0,"message":{"id":37,"result":{"debuggerId":"(E73350C9CDDD6B3D1C83ABDBA5F010BF)"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107299,"metadata":{"connectionId":0,"message":{"id":38,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107299,"metadata":{"connectionId":0,"message":{"id":39,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107299,"metadata":{"connectionId":0,"message":{"id":40,"result":{"breakpointId":"8:beforeScriptWithSourceMapExecution"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.receive","timestamp":1588425107299,"metadata":{"connectionId":3,"message":{"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code - Insiders","adapterID":"pwa-chrome","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true},"type":"request","seq":1}},"level":0} {"tag":"dap.send","timestamp":1588425107299,"metadata":{"connectionId":3,"message":{"seq":1,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsConfigurationDoneRequest":true,"supportsFunctionBreakpoints":false,"supportsConditionalBreakpoints":true,"supportsHitConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"exceptionBreakpointFilters":[{"filter":"caught","label":"Caught Exceptions","default":false},{"filter":"uncaught","label":"Uncaught Exceptions","default":false}],"supportsStepBack":false,"supportsSetVariable":true,"supportsRestartFrame":true,"supportsGotoTargetsRequest":false,"supportsStepInTargetsRequest":false,"supportsCompletionsRequest":true,"supportsModulesRequest":false,"additionalModuleColumns":[],"supportedChecksumAlgorithms":[],"supportsRestartRequest":true,"supportsExceptionOptions":false,"supportsValueFormattingOptions":true,"supportsExceptionInfoRequest":true,"supportTerminateDebuggee":false,"supportsDelayedStackTraceLoading":true,"supportsLoadedSourcesRequest":true,"supportsLogPoints":true,"supportsTerminateThreadsRequest":false,"supportsSetExpression":false,"supportsTerminateRequest":false,"completionTriggerCharacters":[".","[","\"","'"],"supportsBreakpointLocationsRequest":true,"supportsClipboardContext":true}}},"level":0} {"tag":"dap.send","timestamp":1588425107300,"metadata":{"connectionId":3,"message":{"seq":2,"type":"event","event":"initialized","body":{}}},"level":0} {"tag":"dap.send","timestamp":1588425107300,"metadata":{"connectionId":3,"message":{"seq":3,"type":"event","event":"thread","body":{"reason":"started","threadId":2}}},"level":0} {"tag":"dap.receive","timestamp":1588425107301,"metadata":{"connectionId":3,"message":{"command":"launch","arguments":{"type":"pwa-chrome","name":"workerMain.js#editorWorkerService","request":"launch","__pendingTargetId":"A8585C0397D8E76238671E12CC9F8497","__sessionId":"aaacee2f-6dc7-4138-bdac-9895186b850a"},"type":"request","seq":2}},"level":0} {"tag":"cdp.send","timestamp":1588425107306,"metadata":{"connectionId":0,"message":{"id":41,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"8:beforeScriptWithSourceMapExecution"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.receive","timestamp":1588425107306,"metadata":{"connectionId":3,"message":{"command":"setExceptionBreakpoints","arguments":{"filters":[]},"type":"request","seq":3}},"level":0} {"tag":"cdp.send","timestamp":1588425107306,"metadata":{"connectionId":0,"message":{"id":42,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107307,"metadata":{"connectionId":0,"message":{"id":41,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107307,"metadata":{"connectionId":0,"message":{"id":42,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425107309,"metadata":{"connectionId":3,"message":{"seq":4,"type":"response","request_seq":3,"command":"setExceptionBreakpoints","success":true,"body":{}}},"level":0} {"tag":"dap.receive","timestamp":1588425107311,"metadata":{"connectionId":3,"message":{"command":"configurationDone","type":"request","seq":4}},"level":0} {"tag":"dap.send","timestamp":1588425107312,"metadata":{"connectionId":3,"message":{"seq":5,"type":"response","request_seq":4,"command":"configurationDone","success":true,"body":{}}},"level":0} {"tag":"perf.function","timestamp":1588425107312,"message":"","metadata":{"method":"BreakpointManager.launchBlocker","duration":1},"level":0} {"tag":"cdp.send","timestamp":1588425107312,"metadata":{"connectionId":0,"message":{"id":43,"method":"Runtime.runIfWaitingForDebugger","params":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425107312,"metadata":{"connectionId":3,"message":{"seq":6,"type":"response","request_seq":2,"command":"launch","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107312,"metadata":{"connectionId":0,"message":{"id":43,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.receive","timestamp":1588425107314,"metadata":{"connectionId":3,"message":{"command":"threads","type":"request","seq":5}},"level":0} {"tag":"dap.send","timestamp":1588425107314,"metadata":{"connectionId":3,"message":{"seq":7,"type":"response","request_seq":5,"command":"threads","success":true,"body":{"threads":[{"id":2,"name":"workerMain.js#editorWorkerService"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425107316,"metadata":{"connectionId":3,"message":{"command":"enableCustomBreakpoints","arguments":{"ids":[]},"type":"request","seq":6}},"level":0} {"tag":"dap.send","timestamp":1588425107316,"metadata":{"connectionId":3,"message":{"seq":8,"type":"response","request_seq":6,"command":"enableCustomBreakpoints","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107326,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","startLine":0,"startColumn":0,"endLine":39,"endColumn":38,"executionContextId":1,"hash":"0761ad880c81da4607fdef067a082465091155ed","isLiveEdit":false,"sourceMapURL":"workerMain.js.map","hasSourceURL":false,"isModule":false,"length":1604},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107327,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.193","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/loader.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.434912,"wallTime":1588425107.313182,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":9,"columnNumber":8},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":38,"columnNumber":2}],"parentId":{"id":"13","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107327,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.193","loaderId":"","timestamp":547789.436663,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/loader.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":84998,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107327,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.193","timestamp":547789.436681,"dataLength":84998,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107327,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.193","timestamp":547789.436729,"encodedDataLength":84998,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107327,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","startLine":0,"startColumn":0,"endLine":1814,"endColumn":0,"executionContextId":1,"hash":"0d3bfdfb969bf37501c85a204f62ef996bcc8398","isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":84998,"stackTrace":{"callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":9,"columnNumber":8}],"parentId":{"id":"13","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107328,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","absolutePath":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107328,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107328,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/worker/workerMain.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","sourceMapSources":["vs/base/worker/workerMain.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107328,"metadata":{"connectionId":3,"message":{"seq":9,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","path":"/Users/roblou/code/vscode/src/vs/base/worker/workerMain.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107329,"metadata":{"connectionId":3,"message":{"seq":10,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","path":"/Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107334,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/loader.js","absolutePath":"/Users/roblou/code/vscode/out/vs/loader.js"},"level":0} {"tag":"dap.send","timestamp":1588425107339,"metadata":{"connectionId":3,"message":{"seq":11,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/loader.js","path":"/Users/roblou/code/vscode/out/vs/loader.js","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107351,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.194","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.453582,"wallTime":1588425107.331855,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107351,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.194","loaderId":"","timestamp":547789.455271,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":11659,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107351,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.194","timestamp":547789.4554,"dataLength":11659,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107351,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.194","timestamp":547789.455416,"encodedDataLength":11659,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107351,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","startLine":0,"startColumn":0,"endLine":280,"endColumn":40,"executionContextId":1,"hash":"1e4404551e0be9a411ad089a95fe405f01508de3","isLiveEdit":false,"sourceMapURL":"simpleWorker.js.map","hasSourceURL":false,"isModule":false,"length":11659,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107352,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.195","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.457073,"wallTime":1588425107.335343,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107352,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.195","loaderId":"","timestamp":547789.460404,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5770,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.195","timestamp":547789.460418,"dataLength":5770,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.195","timestamp":547789.460424,"encodedDataLength":5770,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"14","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","startLine":0,"startColumn":0,"endLine":157,"endColumn":34,"executionContextId":1,"hash":"2ec16db26ac756ee4381a2954d021352258febc8","isLiveEdit":false,"sourceMapURL":"errors.js.map","hasSourceURL":false,"isModule":false,"length":5770,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.196","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.461954,"wallTime":1588425107.340225,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.196","loaderId":"","timestamp":547789.463424,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":7773,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.196","timestamp":547789.463438,"dataLength":7773,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107353,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.196","timestamp":547789.463451,"encodedDataLength":7773,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107358,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"15","url":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","startLine":0,"startColumn":0,"endLine":220,"endColumn":37,"executionContextId":1,"hash":"2c9e39074f6024604cafe751a713c25746c76c44","isLiveEdit":false,"sourceMapURL":"lifecycle.js.map","hasSourceURL":false,"isModule":false,"length":7773,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107358,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.197","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.464327,"wallTime":1588425107.342597,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107358,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.197","loaderId":"","timestamp":547789.4655,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":915,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107358,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.197","timestamp":547789.465512,"dataLength":915,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107358,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.197","timestamp":547789.465516,"encodedDataLength":915,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107358,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"16","url":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","startLine":0,"startColumn":0,"endLine":23,"endColumn":38,"executionContextId":1,"hash":"0b69309b788e072f18a90bed2d3e62cc77b10ac8","isLiveEdit":false,"sourceMapURL":"functional.js.map","hasSourceURL":false,"isModule":false,"length":915,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.198","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.466684,"wallTime":1588425107.344954,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.198","loaderId":"","timestamp":547789.468189,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":8036,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.198","timestamp":547789.468203,"dataLength":8036,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.198","timestamp":547789.468217,"encodedDataLength":8036,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"17","url":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","startLine":0,"startColumn":0,"endLine":187,"endColumn":36,"executionContextId":1,"hash":"143a3f5f15d430764e326dad887426143f661c35","isLiveEdit":false,"sourceMapURL":"platform.js.map","hasSourceURL":false,"isModule":false,"length":8036,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.199","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.469902,"wallTime":1588425107.348173,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.199","loaderId":"","timestamp":547789.471134,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":8639,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.199","timestamp":547789.471147,"dataLength":8639,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.199","timestamp":547789.47116,"encodedDataLength":8639,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107359,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"18","url":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","startLine":0,"startColumn":0,"endLine":228,"endColumn":33,"executionContextId":1,"hash":"13d00c479c1228b948ea8ff3cbdbc60e33c77020","isLiveEdit":false,"sourceMapURL":"types.js.map","hasSourceURL":false,"isModule":false,"length":8639,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107362,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107362,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107362,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/worker/simpleWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","sourceMapSources":["vs/base/common/worker/simpleWorker.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107362,"metadata":{"connectionId":3,"message":{"seq":12,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/worker/simpleWorker.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107364,"metadata":{"connectionId":3,"message":{"seq":13,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","path":"/Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107367,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/errors.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107367,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107367,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/errors.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/errors.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/errors.ts","sourceMapSources":["vs/base/common/errors.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107368,"metadata":{"connectionId":3,"message":{"seq":14,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/errors.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107371,"metadata":{"connectionId":3,"message":{"seq":15,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/errors.js","path":"/Users/roblou/code/vscode/out/vs/base/common/errors.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107376,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107376,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107376,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/lifecycle.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/lifecycle.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","sourceMapSources":["vs/base/common/lifecycle.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107376,"metadata":{"connectionId":3,"message":{"seq":16,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/lifecycle.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107379,"metadata":{"connectionId":3,"message":{"seq":17,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","path":"/Users/roblou/code/vscode/out/vs/base/common/lifecycle.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107380,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/functional.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107381,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107381,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/functional.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/functional.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/functional.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/functional.ts","sourceMapSources":["vs/base/common/functional.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107381,"metadata":{"connectionId":3,"message":{"seq":18,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/functional.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107383,"metadata":{"connectionId":3,"message":{"seq":19,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/functional.js","path":"/Users/roblou/code/vscode/out/vs/base/common/functional.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107388,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/platform.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107388,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107388,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/platform.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/platform.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/platform.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/platform.ts","sourceMapSources":["vs/base/common/platform.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107389,"metadata":{"connectionId":3,"message":{"seq":20,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/platform.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107391,"metadata":{"connectionId":3,"message":{"seq":21,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/platform.js","path":"/Users/roblou/code/vscode/out/vs/base/common/platform.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107394,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/types.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107394,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107394,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/types.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/types.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/types.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/types.ts","sourceMapSources":["vs/base/common/types.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107395,"metadata":{"connectionId":3,"message":{"seq":22,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/types.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107397,"metadata":{"connectionId":3,"message":{"seq":23,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/types.js","path":"/Users/roblou/code/vscode/out/vs/base/common/types.js","sourceReference":0}}}},"level":0} {"tag":"dap.receive","timestamp":1588425107407,"metadata":{"connectionId":3,"message":{"command":"threads","type":"request","seq":7}},"level":0} {"tag":"dap.send","timestamp":1588425107407,"metadata":{"connectionId":3,"message":{"seq":24,"type":"response","request_seq":7,"command":"threads","success":true,"body":{"threads":[{"id":2,"name":"workerMain.js#editorWorkerService"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.200","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.47533,"wallTime":1588425107.3536,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.200","loaderId":"","timestamp":547789.481717,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":22734,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.200","timestamp":547789.481736,"dataLength":22734,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.200","timestamp":547789.481756,"encodedDataLength":22734,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"19","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","startLine":0,"startColumn":0,"endLine":496,"endColumn":46,"executionContextId":1,"hash":"13ad376385356bd25cbac35bb26b7339089365a2","isLiveEdit":false,"sourceMapURL":"editorSimpleWorker.js.map","hasSourceURL":false,"isModule":false,"length":22734,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.201","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.484103,"wallTime":1588425107.362373,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.201","loaderId":"","timestamp":547789.487419,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":18505,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.201","timestamp":547789.487467,"dataLength":18505,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107460,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.201","timestamp":547789.487511,"encodedDataLength":18505,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107461,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"20","url":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","startLine":0,"startColumn":0,"endLine":533,"endColumn":34,"executionContextId":1,"hash":"10fedfc2513e56254c94c0c6a06b69b36eeb4554","isLiveEdit":false,"sourceMapURL":"arrays.js.map","hasSourceURL":false,"isModule":false,"length":18505,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107461,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.202","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.48924,"wallTime":1588425107.367509,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107461,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.202","loaderId":"","timestamp":547789.494795,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":50276,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107462,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.202","timestamp":547789.49481,"dataLength":50276,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107462,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.202","timestamp":547789.494844,"encodedDataLength":50276,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107462,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"21","url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","startLine":0,"startColumn":0,"endLine":830,"endColumn":32,"executionContextId":1,"hash":"330c75c310e3061c514645e4b8de3e8b69a95ffa","isLiveEdit":false,"sourceMapURL":"diff.js.map","hasSourceURL":false,"isModule":false,"length":50276,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.203","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.496884,"wallTime":1588425107.375154,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.203","loaderId":"","timestamp":547789.499968,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":1674,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.203","timestamp":547789.499982,"dataLength":1674,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.203","timestamp":547789.499986,"encodedDataLength":1674,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"22","url":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","startLine":0,"startColumn":0,"endLine":38,"endColumn":38,"executionContextId":1,"hash":"37d87831261211715641ddf5005f4db80f1ca4cd","isLiveEdit":false,"sourceMapURL":"diffChange.js.map","hasSourceURL":false,"isModule":false,"length":1674,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.204","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.500797,"wallTime":1588425107.379066,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107463,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.204","loaderId":"","timestamp":547789.503982,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":12254,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107464,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.204","timestamp":547789.504007,"dataLength":12254,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107464,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.204","timestamp":547789.504026,"encodedDataLength":12254,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107466,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"23","url":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","startLine":0,"startColumn":0,"endLine":280,"endColumn":32,"executionContextId":1,"hash":"3923fd9d9e19ce1017a8bc448877fc5e2fdcb5b7","isLiveEdit":false,"sourceMapURL":"hash.js.map","hasSourceURL":false,"isModule":false,"length":12254,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107466,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.205","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.505206,"wallTime":1588425107.383474,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107466,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.205","loaderId":"","timestamp":547789.511424,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":67305,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107466,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.205","timestamp":547789.511438,"dataLength":67305,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107466,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.205","timestamp":547789.511547,"encodedDataLength":67305,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107466,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"24","url":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","startLine":0,"startColumn":0,"endLine":1010,"endColumn":35,"executionContextId":1,"hash":"34aeda1a80a584f007deb4fb1be286a75162ea5c","isLiveEdit":false,"sourceMapURL":"strings.js.map","hasSourceURL":false,"isModule":false,"length":67226,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.206","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.514709,"wallTime":1588425107.392978,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.206","loaderId":"","timestamp":547789.516785,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":23750,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.206","timestamp":547789.516798,"dataLength":23750,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.206","timestamp":547789.516819,"encodedDataLength":23750,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"25","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","startLine":0,"startColumn":0,"endLine":592,"endColumn":31,"executionContextId":1,"hash":"16228b08370d5fd72f59050c496c8240708c2def","isLiveEdit":false,"sourceMapURL":"uri.js.map","hasSourceURL":false,"isModule":false,"length":23750,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.207","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.518609,"wallTime":1588425107.396877,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.207","loaderId":"","timestamp":547789.520518,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":58362,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.207","timestamp":547789.520535,"dataLength":58362,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.207","timestamp":547789.520581,"encodedDataLength":58362,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"26","url":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","startLine":0,"startColumn":0,"endLine":1365,"endColumn":32,"executionContextId":1,"hash":"182be74e73ade8830ba55432910132884f4871b8","isLiveEdit":false,"sourceMapURL":"path.js.map","hasSourceURL":false,"isModule":false,"length":58362,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107467,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.208","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.522712,"wallTime":1588425107.40098,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.208","loaderId":"","timestamp":547789.525126,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":1143,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.208","timestamp":547789.525139,"dataLength":1143,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.208","timestamp":547789.525144,"encodedDataLength":1143,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"27","url":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","startLine":0,"startColumn":0,"endLine":19,"endColumn":35,"executionContextId":1,"hash":"1def968e323d60b37fd401cb60b7151d14ccf895","isLiveEdit":false,"sourceMapURL":"process.js.map","hasSourceURL":false,"isModule":false,"length":1143,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.209","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.526444,"wallTime":1588425107.404712,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.209","loaderId":"","timestamp":547789.529138,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":4658,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.209","timestamp":547789.529152,"dataLength":4658,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.209","timestamp":547789.529158,"encodedDataLength":4658,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"28","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","startLine":0,"startColumn":0,"endLine":140,"endColumn":36,"executionContextId":1,"hash":"010af30d292aaee534c1776a77c248697fe6e199","isLiveEdit":false,"sourceMapURL":"position.js.map","hasSourceURL":false,"isModule":false,"length":4658,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.210","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.529926,"wallTime":1588425107.408194,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.210","loaderId":"","timestamp":547789.532892,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":15399,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107468,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.210","timestamp":547789.532909,"dataLength":15399,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.210","timestamp":547789.532945,"encodedDataLength":15399,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"29","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","startLine":0,"startColumn":0,"endLine":365,"endColumn":33,"executionContextId":1,"hash":"273086421a380c92123e02fb0de28d7916c0cb71","isLiveEdit":false,"sourceMapURL":"range.js.map","hasSourceURL":false,"isModule":false,"length":15399,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.211","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.534118,"wallTime":1588425107.412386,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.211","loaderId":"","timestamp":547789.535886,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":22076,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.211","timestamp":547789.535899,"dataLength":22076,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.211","timestamp":547789.535918,"encodedDataLength":22076,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107469,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"30","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","startLine":0,"startColumn":0,"endLine":393,"endColumn":40,"executionContextId":1,"hash":"302489324b0a87f820126782663a3a193b0edb01","isLiveEdit":false,"sourceMapURL":"diffComputer.js.map","hasSourceURL":false,"isModule":false,"length":22076,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107472,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107472,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107472,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/services/editorSimpleWorker.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","sourceMapSources":["vs/editor/common/services/editorSimpleWorker.ts"]},"level":0} {"tag":"cdp.receive","timestamp":1588425107473,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.212","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.537041,"wallTime":1588425107.415309,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425107474,"metadata":{"connectionId":3,"message":{"seq":25,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/services/editorSimpleWorker.ts","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107479,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107479,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107479,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/arrays.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/arrays.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/arrays.ts","sourceMapSources":["vs/base/common/arrays.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107480,"metadata":{"connectionId":3,"message":{"seq":26,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/arrays.ts","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107480,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.212","loaderId":"","timestamp":547789.538062,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5475,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425107482,"metadata":{"connectionId":3,"message":{"seq":27,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/services/editorSimpleWorker.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107484,"metadata":{"connectionId":3,"message":{"seq":28,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js","path":"/Users/roblou/code/vscode/out/vs/base/common/arrays.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107484,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107484,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107484,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/diff/diff.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diff.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","sourceMapSources":["vs/base/common/diff/diff.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107486,"metadata":{"connectionId":3,"message":{"seq":29,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/diff/diff.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107489,"metadata":{"connectionId":3,"message":{"seq":30,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","path":"/Users/roblou/code/vscode/out/vs/base/common/diff/diff.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107489,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107489,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107489,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/diff/diffChange.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","sourceMapSources":["vs/base/common/diff/diffChange.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107490,"metadata":{"connectionId":3,"message":{"seq":31,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/diff/diffChange.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107491,"metadata":{"connectionId":3,"message":{"seq":32,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","path":"/Users/roblou/code/vscode/out/vs/base/common/diff/diffChange.js","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107493,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.212","timestamp":547789.538073,"dataLength":5475,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107493,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.212","timestamp":547789.538078,"encodedDataLength":5475,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107493,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"31","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","startLine":0,"startColumn":0,"endLine":112,"endColumn":43,"executionContextId":1,"hash":"27b7ed8b5564410c79e1f208275d7fdd08eb3fb2","isLiveEdit":false,"sourceMapURL":"mirrorTextModel.js.map","hasSourceURL":false,"isModule":false,"length":5475,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107494,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.213","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.53869,"wallTime":1588425107.416957,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107494,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/hash.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107494,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107494,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/hash.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/hash.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/hash.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/hash.ts","sourceMapSources":["vs/base/common/hash.ts"]},"level":0} {"tag":"cdp.receive","timestamp":1588425107494,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.213","loaderId":"","timestamp":547789.540268,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5957,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107494,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.213","timestamp":547789.54028,"dataLength":5957,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107494,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.213","timestamp":547789.540293,"encodedDataLength":5957,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107494,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"32","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","startLine":0,"startColumn":0,"endLine":144,"endColumn":45,"executionContextId":1,"hash":"284630c243559fc8567076fe488f13e11991c285","isLiveEdit":false,"sourceMapURL":"prefixSumComputer.js.map","hasSourceURL":false,"isModule":false,"length":5957,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107494,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.214","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.541223,"wallTime":1588425107.419491,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.214","loaderId":"","timestamp":547789.54349,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":2505,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.214","timestamp":547789.543503,"dataLength":2505,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.214","timestamp":547789.543508,"encodedDataLength":2505,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"33","url":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","startLine":0,"startColumn":0,"endLine":59,"endColumn":32,"executionContextId":1,"hash":"1cc7de0502a980217398127e32558bf66ca0a1ce","isLiveEdit":false,"sourceMapURL":"uint.js.map","hasSourceURL":false,"isModule":false,"length":2505,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.215","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.544594,"wallTime":1588425107.422862,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.215","loaderId":"","timestamp":547789.546418,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5043,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.215","timestamp":547789.546432,"dataLength":5043,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.215","timestamp":547789.546437,"encodedDataLength":5043,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"34","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","startLine":0,"startColumn":0,"endLine":124,"endColumn":38,"executionContextId":1,"hash":"2dfd1d0a1d0795f94af55d8f7851801170f4bb85","isLiveEdit":false,"sourceMapURL":"wordHelper.js.map","hasSourceURL":false,"isModule":false,"length":5043,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.216","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.547418,"wallTime":1588425107.425686,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.216","loaderId":"","timestamp":547789.549055,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":14916,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.216","timestamp":547789.549068,"dataLength":14916,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.216","timestamp":547789.549111,"encodedDataLength":14916,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107495,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"35","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","startLine":0,"startColumn":0,"endLine":296,"endColumn":40,"executionContextId":1,"hash":"2ffed8e16eb3cb1532ffc5dac3f62aec51313ef1","isLiveEdit":false,"sourceMapURL":"linkComputer.js.map","hasSourceURL":false,"isModule":false,"length":14830,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425107496,"metadata":{"connectionId":3,"message":{"seq":33,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/hash.ts","sourceReference":0}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.217","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.550161,"wallTime":1588425107.428429,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.217","loaderId":"","timestamp":547789.551489,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":2414,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.217","timestamp":547789.55151,"dataLength":2414,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.217","timestamp":547789.551518,"encodedDataLength":2414,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"36","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","startLine":0,"startColumn":0,"endLine":62,"endColumn":47,"executionContextId":1,"hash":"0a87812c6ef4dcc46308edb145ab6a33122935c9","isLiveEdit":false,"sourceMapURL":"characterClassifier.js.map","hasSourceURL":false,"isModule":false,"length":2414,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.218","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.552395,"wallTime":1588425107.430663,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.218","loaderId":"","timestamp":547789.553572,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":3981,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.218","timestamp":547789.553583,"dataLength":3981,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.218","timestamp":547789.553598,"encodedDataLength":3981,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"37","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","startLine":0,"startColumn":0,"endLine":94,"endColumn":49,"executionContextId":1,"hash":"26f4303e9f6b48ea487611a239960de30b4c5fa1","isLiveEdit":false,"sourceMapURL":"inplaceReplaceSupport.js.map","hasSourceURL":false,"isModule":false,"length":3981,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.219","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.554289,"wallTime":1588425107.432556,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107496,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.219","loaderId":"","timestamp":547789.555239,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":2163,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.219","timestamp":547789.55525,"dataLength":2163,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.219","timestamp":547789.555253,"encodedDataLength":2163,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"38","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","startLine":0,"startColumn":0,"endLine":41,"endColumn":42,"executionContextId":1,"hash":"3f3d47fb496be7f832dbb736c5e889687ed246af","isLiveEdit":false,"sourceMapURL":"standaloneBase.js.map","hasSourceURL":false,"isModule":false,"length":2163,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.220","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.555923,"wallTime":1588425107.43419,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.220","loaderId":"","timestamp":547789.558288,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":4416,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.220","timestamp":547789.558301,"dataLength":4416,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.220","timestamp":547789.558305,"encodedDataLength":4416,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"39","url":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","startLine":0,"startColumn":0,"endLine":115,"endColumn":40,"executionContextId":1,"hash":"062a64b7042bde511df7291faa628fd37742f987","isLiveEdit":false,"sourceMapURL":"cancellation.js.map","hasSourceURL":false,"isModule":false,"length":4416,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.221","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.559127,"wallTime":1588425107.437394,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.221","loaderId":"","timestamp":547789.561317,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":27605,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.221","timestamp":547789.561399,"dataLength":27605,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.221","timestamp":547789.561422,"encodedDataLength":27605,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"40","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","startLine":0,"startColumn":0,"endLine":701,"endColumn":33,"executionContextId":1,"hash":"32f199440075f93a6f84d741c935e07641949e98","isLiveEdit":false,"sourceMapURL":"event.js.map","hasSourceURL":false,"isModule":false,"length":27605,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.222","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.562712,"wallTime":1588425107.440979,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.222","loaderId":"","timestamp":547789.564288,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":4406,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.222","timestamp":547789.5643,"dataLength":4406,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.222","timestamp":547789.564305,"encodedDataLength":4406,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107497,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"41","url":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","startLine":0,"startColumn":0,"endLine":133,"endColumn":38,"executionContextId":1,"hash":"33fcdb9d5bf9f8db796585b7b16c34a426cad31d","isLiveEdit":false,"sourceMapURL":"linkedList.js.map","hasSourceURL":false,"isModule":false,"length":4406,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.223","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.565833,"wallTime":1588425107.4441,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.223","loaderId":"","timestamp":547789.567393,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":21997,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.223","timestamp":547789.567406,"dataLength":21997,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.223","timestamp":547789.567439,"encodedDataLength":21997,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"42","url":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","startLine":0,"startColumn":0,"endLine":502,"endColumn":36,"executionContextId":1,"hash":"1b09f03161fe8283540e4a52a576944c532c4b22","isLiveEdit":false,"sourceMapURL":"keyCodes.js.map","hasSourceURL":false,"isModule":false,"length":21997,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.224","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.569748,"wallTime":1588425107.448015,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.224","loaderId":"","timestamp":547789.571231,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":5998,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.224","timestamp":547789.571243,"dataLength":5998,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.224","timestamp":547789.57125,"encodedDataLength":5998,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"43","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","startLine":0,"startColumn":0,"endLine":143,"endColumn":37,"executionContextId":1,"hash":"3c5a5e2d6dabcd0043229b283b0d87ab23f75b0c","isLiveEdit":false,"sourceMapURL":"selection.js.map","hasSourceURL":false,"isModule":false,"length":5998,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.225","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.572001,"wallTime":1588425107.450268,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.225","loaderId":"","timestamp":547789.573713,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":1365,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.225","timestamp":547789.573726,"dataLength":1365,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.225","timestamp":547789.573731,"encodedDataLength":1365,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"44","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","startLine":0,"startColumn":0,"endLine":34,"endColumn":33,"executionContextId":1,"hash":"3f04b4c58f4576d620f870180ecbb7017e59659d","isLiveEdit":false,"sourceMapURL":"token.js.map","hasSourceURL":false,"isModule":false,"length":1365,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.226","loaderId":"","documentURL":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js","request":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"initialPriority":"VeryHigh","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547789.574428,"wallTime":1588425107.452695,"initiator":{"type":"script","stack":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":260,"columnNumber":21},{"functionName":"initialize","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":258,"columnNumber":19},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":221,"columnNumber":28},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":213,"columnNumber":54},{"functionName":"_handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":81,"columnNumber":39},{"functionName":"handleMessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":54,"columnNumber":17},{"functionName":"onmessage","scriptId":"13","url":"file:///Users/roblou/code/vscode/out/vs/base/common/worker/simpleWorker.js","lineNumber":217,"columnNumber":27},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":21,"columnNumber":55},{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":23,"columnNumber":25}],"parent":{"description":"setTimeout","callFrames":[{"functionName":"","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":17,"columnNumber":12},{"functionName":"Module._safeInvokeFunction","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1017,"columnNumber":44},{"functionName":"Module._invokeFactory","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1036,"columnNumber":28},{"functionName":"Module.complete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1049,"columnNumber":35},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1670,"columnNumber":19},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._onModuleComplete","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1682,"columnNumber":29},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1630,"columnNumber":21},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"ModuleManager._onLoad","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1357,"columnNumber":21},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1535,"columnNumber":30},{"functionName":"OnlyOnceScriptLoader.triggerCallback","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":590,"columnNumber":35},{"functionName":"","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":89},{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":646,"columnNumber":16},{"functionName":"OnlyOnceScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":584,"columnNumber":31},{"functionName":"loadNextPath","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1530,"columnNumber":40},{"functionName":"ModuleManager._loadModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1542,"columnNumber":12},{"functionName":"ModuleManager._resolve","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1626,"columnNumber":25},{"functionName":"ModuleManager.defineModule","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1277,"columnNumber":17},{"functionName":"RequireFunc","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":1745,"columnNumber":30},{"functionName":"loadCode","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":16,"columnNumber":8},{"functionName":"self.onmessage","scriptId":"11","url":"file:///Users/roblou/code/vscode/out/vs/base/worker/workerMain.js#editorWorkerService","lineNumber":36,"columnNumber":8}],"parentId":{"id":"14","debuggerId":"(886E1E37353BC737D50027E50F3F3CB4)"}}}},"type":"Other","hasUserGesture":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.226","loaderId":"","timestamp":547789.576258,"type":"Other","response":{"url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","status":200,"statusText":"OK","headers":{"Content-Type":"text/javascript"},"mimeType":"text/javascript","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":43661,"protocol":"file","securityState":"secure"}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.226","timestamp":547789.576272,"dataLength":43661,"encodedDataLength":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107498,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.226","timestamp":547789.5763,"encodedDataLength":43661,"shouldReportCorbBlocking":false},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425107499,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"45","url":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","startLine":0,"startColumn":0,"endLine":810,"endColumn":43,"executionContextId":1,"hash":"0a1fbb6b6d9b3ce310baace92ef075a0781fcbbc","isLiveEdit":false,"sourceMapURL":"standaloneEnums.js.map","hasSourceURL":false,"isModule":false,"length":43661,"stackTrace":{"callFrames":[{"functionName":"WorkerScriptLoader.load","scriptId":"12","url":"file:///Users/roblou/code/vscode/out/vs/loader.js","lineNumber":645,"columnNumber":16}],"parentId":{"id":"1"}}},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425107499,"metadata":{"connectionId":3,"message":{"seq":34,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/hash.js","path":"/Users/roblou/code/vscode/out/vs/base/common/hash.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107502,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/strings.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107502,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107502,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/strings.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/strings.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/strings.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/strings.ts","sourceMapSources":["vs/base/common/strings.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107503,"metadata":{"connectionId":3,"message":{"seq":35,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/strings.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107506,"metadata":{"connectionId":3,"message":{"seq":36,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/strings.js","path":"/Users/roblou/code/vscode/out/vs/base/common/strings.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107509,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uri.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107510,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107510,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uri.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uri.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uri.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uri.ts","sourceMapSources":["vs/base/common/uri.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107510,"metadata":{"connectionId":3,"message":{"seq":37,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uri.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107511,"metadata":{"connectionId":3,"message":{"seq":38,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uri.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uri.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107516,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/path.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107516,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107516,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/path.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/path.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/path.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/path.ts","sourceMapSources":["vs/base/common/path.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107516,"metadata":{"connectionId":3,"message":{"seq":39,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/path.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107518,"metadata":{"connectionId":3,"message":{"seq":40,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/path.js","path":"/Users/roblou/code/vscode/out/vs/base/common/path.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107521,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/process.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107521,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107521,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/process.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/process.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/process.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/process.ts","sourceMapSources":["vs/base/common/process.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107521,"metadata":{"connectionId":3,"message":{"seq":41,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/process.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107522,"metadata":{"connectionId":3,"message":{"seq":42,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/process.js","path":"/Users/roblou/code/vscode/out/vs/base/common/process.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107525,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107525,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107525,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/position.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/position.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","sourceMapSources":["vs/editor/common/core/position.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107525,"metadata":{"connectionId":3,"message":{"seq":43,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/position.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107526,"metadata":{"connectionId":3,"message":{"seq":44,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/position.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107531,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107531,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107531,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/range.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/range.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","sourceMapSources":["vs/editor/common/core/range.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107531,"metadata":{"connectionId":3,"message":{"seq":45,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/range.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107532,"metadata":{"connectionId":3,"message":{"seq":46,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/range.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107537,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107538,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107538,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/diff/diffComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","sourceMapSources":["vs/editor/common/diff/diffComputer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107538,"metadata":{"connectionId":3,"message":{"seq":47,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/diff/diffComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107538,"metadata":{"connectionId":3,"message":{"seq":48,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/diff/diffComputer.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107543,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107543,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107543,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/mirrorTextModel.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","sourceMapSources":["vs/editor/common/model/mirrorTextModel.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107543,"metadata":{"connectionId":3,"message":{"seq":49,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/mirrorTextModel.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107543,"metadata":{"connectionId":3,"message":{"seq":50,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/mirrorTextModel.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107549,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107549,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107549,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/viewModel/prefixSumComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","sourceMapSources":["vs/editor/common/viewModel/prefixSumComputer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107549,"metadata":{"connectionId":3,"message":{"seq":51,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/viewModel/prefixSumComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107549,"metadata":{"connectionId":3,"message":{"seq":52,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/viewModel/prefixSumComputer.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107553,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/uint.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107554,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107554,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/uint.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/uint.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/uint.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/uint.ts","sourceMapSources":["vs/base/common/uint.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107554,"metadata":{"connectionId":3,"message":{"seq":53,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/uint.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107554,"metadata":{"connectionId":3,"message":{"seq":54,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/uint.js","path":"/Users/roblou/code/vscode/out/vs/base/common/uint.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107560,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107560,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107560,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/model/wordHelper.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","sourceMapSources":["vs/editor/common/model/wordHelper.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107560,"metadata":{"connectionId":3,"message":{"seq":55,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/model/wordHelper.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107560,"metadata":{"connectionId":3,"message":{"seq":56,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/model/wordHelper.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107566,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107566,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107566,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/linkComputer.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","sourceMapSources":["vs/editor/common/modes/linkComputer.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107566,"metadata":{"connectionId":3,"message":{"seq":57,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/linkComputer.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107567,"metadata":{"connectionId":3,"message":{"seq":58,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/linkComputer.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107572,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107573,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107573,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/characterClassifier.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","sourceMapSources":["vs/editor/common/core/characterClassifier.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107573,"metadata":{"connectionId":3,"message":{"seq":59,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/characterClassifier.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107574,"metadata":{"connectionId":3,"message":{"seq":60,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/characterClassifier.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107578,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107578,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107578,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/modes/supports/inplaceReplaceSupport.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","sourceMapSources":["vs/editor/common/modes/supports/inplaceReplaceSupport.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107578,"metadata":{"connectionId":3,"message":{"seq":61,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107579,"metadata":{"connectionId":3,"message":{"seq":62,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/modes/supports/inplaceReplaceSupport.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107583,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107583,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107583,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standalone/standaloneBase.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","sourceMapSources":["vs/editor/common/standalone/standaloneBase.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107583,"metadata":{"connectionId":3,"message":{"seq":63,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneBase.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107591,"metadata":{"connectionId":3,"message":{"seq":64,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneBase.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107594,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107594,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107594,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/cancellation.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/cancellation.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","sourceMapSources":["vs/base/common/cancellation.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107595,"metadata":{"connectionId":3,"message":{"seq":65,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/cancellation.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107595,"metadata":{"connectionId":3,"message":{"seq":66,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js","path":"/Users/roblou/code/vscode/out/vs/base/common/cancellation.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107601,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/event.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107601,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107601,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/event.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/event.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceMapSources":["vs/base/common/event.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107601,"metadata":{"connectionId":3,"message":{"seq":67,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107603,"metadata":{"connectionId":3,"message":{"seq":68,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/event.js","path":"/Users/roblou/code/vscode/out/vs/base/common/event.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107606,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107606,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107606,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/linkedList.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/linkedList.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","sourceMapSources":["vs/base/common/linkedList.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107606,"metadata":{"connectionId":3,"message":{"seq":69,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/linkedList.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107607,"metadata":{"connectionId":3,"message":{"seq":70,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js","path":"/Users/roblou/code/vscode/out/vs/base/common/linkedList.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107612,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","absolutePath":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107612,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107612,"message":"Creating source from source map","metadata":{"inputUrl":"vs/base/common/keyCodes.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/base/common/keyCodes.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","sourceMapSources":["vs/base/common/keyCodes.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107613,"metadata":{"connectionId":3,"message":{"seq":71,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/keyCodes.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107613,"metadata":{"connectionId":3,"message":{"seq":72,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","path":"/Users/roblou/code/vscode/out/vs/base/common/keyCodes.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107619,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107619,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107619,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/selection.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/selection.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","sourceMapSources":["vs/editor/common/core/selection.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107619,"metadata":{"connectionId":3,"message":{"seq":73,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/selection.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107619,"metadata":{"connectionId":3,"message":{"seq":74,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/selection.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107624,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107624,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107624,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/core/token.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/core/token.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","sourceMapSources":["vs/editor/common/core/token.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107624,"metadata":{"connectionId":3,"message":{"seq":75,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/core/token.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107624,"metadata":{"connectionId":3,"message":{"seq":76,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/core/token.js","sourceReference":0}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107629,"message":"Creating source from url","metadata":{"inputUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","absolutePath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js"},"level":0} {"tag":"sourcemap.parsing","timestamp":1588425107629,"message":"resolved sourceRoot","metadata":{"sourceRoot":"file:///Users/roblou/code/vscode/src","absSourceRoot":"/Users/roblou/code/vscode/src"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425107629,"message":"Creating source from source map","metadata":{"inputUrl":"vs/editor/common/standalone/standaloneEnums.ts","inputMap":{"sourceMapUrl":"file:///Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js.map","compiledPath":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js"},"absolutePath":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","resolvedUrl":"file:///Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","sourceMapSources":["vs/editor/common/standalone/standaloneEnums.ts"]},"level":0} {"tag":"dap.send","timestamp":1588425107629,"metadata":{"connectionId":3,"message":{"seq":77,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","path":"/Users/roblou/code/vscode/src/vs/editor/common/standalone/standaloneEnums.ts","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425107630,"metadata":{"connectionId":3,"message":{"seq":78,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","path":"/Users/roblou/code/vscode/out/vs/editor/common/standalone/standaloneEnums.js","sourceReference":0}}}},"level":0} {"tag":"dap.send","timestamp":1588425111268,"metadata":{"connectionId":2,"message":{"seq":84,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"disconnect":{"operation":"disconnect","totalTime":2.8,"max":2.8,"avg":2.8,"stddev":null,"count":1,"failed":0},"disconnect.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425111332,"metadata":{"connectionId":0,"message":{"seq":27,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Runtime.consoleAPICalled.errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":5.6,"max":0.4,"avg":0.2,"stddev":0.1,"count":35,"failed":0},"Network.requestWillBeSent.errors":[],"Target.targetCreated":{"operation":"Target.targetCreated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Target.targetCreated.errors":[],"Target.targetInfoChanged":{"operation":"Target.targetInfoChanged","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Target.targetInfoChanged.errors":[],"Target.attachedToTarget":{"operation":"Target.attachedToTarget","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Target.attachedToTarget.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":1.1,"max":0.1,"avg":0,"stddev":0,"count":35,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":0.7,"max":0.1,"avg":0,"stddev":0,"count":35,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":5.4,"max":4.6,"avg":0.2,"stddev":0.8,"count":35,"failed":0},"Network.loadingFinished.errors":[],"Runtime.executionContextCreated":{"operation":"Runtime.executionContextCreated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Runtime.executionContextCreated.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":1.2,"max":0.1,"avg":0,"stddev":0,"count":35,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425112156,"metadata":{"connectionId":0,"message":{"seq":28,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081152.156774:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: file:///Users/roblou/code/notebook-test/test/hello.test.ipynb (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425112157,"metadata":{"connectionId":0,"message":{"seq":29,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081152.157515:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: git:/Users/roblou/code/notebook-test/test/hello.test.ipynb?%7B%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%2C%22ref%22%3A%22~%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425112158,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"file:///Users/roblou/code/notebook-test/test/hello.test.ipynb"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425112156.498,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425112158,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"git:/Users/roblou/code/notebook-test/test/hello.test.ipynb?%7B%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%2C%22ref%22%3A%22~%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425112156.983,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425112160,"metadata":{"connectionId":1,"message":{"seq":3358,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m file:///Users/roblou/code/notebook-test/test/hello.test.ipynb (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"dap.send","timestamp":1588425112160,"metadata":{"connectionId":1,"message":{"seq":3359,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m git:/Users/roblou/code/notebook-test/test/hello.test.ipynb?%7B%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%2C%22ref%22%3A%22~%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"dap.send","timestamp":1588425112301,"metadata":{"connectionId":3,"message":{"seq":79,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"initialize":{"operation":"initialize","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"initialize.errors":[],"setExceptionBreakpoints":{"operation":"setExceptionBreakpoints","totalTime":3.2,"max":3.2,"avg":3.2,"stddev":null,"count":1,"failed":0},"setExceptionBreakpoints.errors":[],"configurationDone":{"operation":"configurationDone","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"configurationDone.errors":[],"launch":{"operation":"launch","totalTime":10.3,"max":10.3,"avg":10.3,"stddev":null,"count":1,"failed":0},"launch.errors":[],"threads":{"operation":"threads","totalTime":0.3,"max":0.2,"avg":0.2,"stddev":0,"count":2,"failed":0},"threads.errors":[],"enableCustomBreakpoints":{"operation":"enableCustomBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"enableCustomBreakpoints.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425112732,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.227","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"file:///Users/roblou/code/vscode/extensions/markdown-language-features/media/preview-right-dark.svg","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"Low","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547794.833681,"wallTime":1588425112.711759,"initiator":{"type":"other"},"type":"Image","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425112732,"metadata":{"connectionId":0,"message":{"method":"Network.resourceChangedPriority","params":{"requestId":"7822.227","newPriority":"High","timestamp":547794.83587},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425112739,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.227","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547794.857755,"type":"Image","response":{"url":"file:///Users/roblou/code/vscode/extensions/markdown-language-features/media/preview-right-dark.svg","status":200,"statusText":"OK","headers":{"Content-Type":"image/svg+xml"},"mimeType":"image/svg+xml","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","securityState":"secure"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425112739,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.227","timestamp":547794.857847,"dataLength":1611,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425112739,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.227","timestamp":547794.858048,"encodedDataLength":1611,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425117162,"metadata":{"connectionId":0,"message":{"seq":30,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0.1,"count":2,"failed":0},"Runtime.consoleAPICalled.errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Network.requestWillBeSent.errors":[],"Network.resourceChangedPriority":{"operation":"Network.resourceChangedPriority","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.resourceChangedPriority.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.loadingFinished.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425118231,"metadata":{"connectionId":0,"message":{"seq":31,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081158.230739:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: file:///Users/roblou/code/notebook-test/readme.md (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425118232,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"file:///Users/roblou/code/notebook-test/readme.md"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425118230.3938,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425118232,"metadata":{"connectionId":0,"message":{"seq":32,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081158.232313:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: git:/Users/roblou/code/notebook-test/readme.md?%7B%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Freadme.md%22%2C%22ref%22%3A%22~%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425118232,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"git:/Users/roblou/code/notebook-test/readme.md?%7B%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Freadme.md%22%2C%22ref%22%3A%22~%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425118230.984,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425118233,"metadata":{"connectionId":1,"message":{"seq":3360,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m file:///Users/roblou/code/notebook-test/readme.md (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"dap.send","timestamp":1588425118234,"metadata":{"connectionId":1,"message":{"seq":3361,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m git:/Users/roblou/code/notebook-test/readme.md?%7B%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Freadme.md%22%2C%22ref%22%3A%22~%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425122781,"metadata":{"connectionId":0,"message":{"method":"Page.frameAttached","params":{"frameId":"750A05DE8E792041CB3A62061A8AD66C","parentFrameId":"254836B4DC9A828F1D61559A5ED12885","stack":{"callFrames":[{"functionName":"doShowEditorPane","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":65,"columnNumber":28},{"functionName":"openEditor","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":47,"columnNumber":40},{"functionName":"","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":667,"columnNumber":68},{"functionName":"doShowEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":679,"columnNumber":22},{"functionName":"doOpenEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":651,"columnNumber":46},{"functionName":"openEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":592,"columnNumber":62},{"functionName":"openEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":392,"columnNumber":75},{"functionName":"onEditorOpening","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":115,"columnNumber":62},{"functionName":"open","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":72,"columnNumber":63},{"functionName":"onGroupWillOpenEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":380,"columnNumber":43},{"functionName":"","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":117,"columnNumber":25},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"openEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":586,"columnNumber":39},{"functionName":"openEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":392,"columnNumber":75},{"functionName":"onEditorOpening","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":141,"columnNumber":54},{"functionName":"open","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":72,"columnNumber":63},{"functionName":"onGroupWillOpenEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":380,"columnNumber":43},{"functionName":"","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":117,"columnNumber":25},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"openEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":586,"columnNumber":39},{"functionName":"","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":899,"columnNumber":102},{"functionName":"","scriptId":"296","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/explorerViewlet.js","lineNumber":161,"columnNumber":41},{"functionName":"openEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":899,"columnNumber":50},{"functionName":"","scriptId":"839","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/files/browser/views/explorerView.js","lineNumber":300,"columnNumber":49},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"open","scriptId":"217","url":"file:///Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","lineNumber":340,"columnNumber":36},{"functionName":"onSelection","scriptId":"217","url":"file:///Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","lineNumber":336,"columnNumber":21},{"functionName":"","scriptId":"217","url":"file:///Users/roblou/code/vscode/out/vs/platform/list/browser/listService.js","lineNumber":306,"columnNumber":78},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":43,"columnNumber":92},{"functionName":"","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":649,"columnNumber":33},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"_set","scriptId":"1155","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","lineNumber":746,"columnNumber":34},{"functionName":"set","scriptId":"1155","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","lineNumber":738,"columnNumber":17},{"functionName":"setSelection","scriptId":"1155","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","lineNumber":892,"columnNumber":36},{"functionName":"onPointer","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":473,"columnNumber":26},{"functionName":"onPointer","scriptId":"1155","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/tree/abstractTree.js","lineNumber":838,"columnNumber":18},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":459,"columnNumber":44},{"functionName":"","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":43,"columnNumber":92},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fn","scriptId":"589","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/event.js","lineNumber":9,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122797,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"41357F0C712668BB0B423FB2A9D21DA9","type":"page","title":"","url":"","attached":false,"browserContextId":"046618A2DD4586A299BCD350062B3F31"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122816,"metadata":{"connectionId":0,"message":{"method":"Page.frameStartedLoading","params":{"frameId":"750A05DE8E792041CB3A62061A8AD66C"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122816,"metadata":{"connectionId":0,"message":{"method":"Page.frameNavigated","params":{"frame":{"id":"750A05DE8E792041CB3A62061A8AD66C","parentId":"254836B4DC9A828F1D61559A5ED12885","loaderId":"F5881C820B23E182CCB090368E4A0F10","name":"","url":"about:blank","securityOrigin":"://","mimeType":"text/html"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122816,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextCreated","params":{"context":{"id":2,"origin":"file://","name":"","auxData":{"isDefault":true,"type":"default","frameId":"750A05DE8E792041CB3A62061A8AD66C"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122816,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1602","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":2,"hash":"0ae1b0392799aa433c3ff667cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"750A05DE8E792041CB3A62061A8AD66C"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"doShowEditorPane","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":65,"columnNumber":28}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122816,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1603","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":2,"hash":"0ae1b0392799aa433c3ff667cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"750A05DE8E792041CB3A62061A8AD66C"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"doShowEditorPane","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":65,"columnNumber":28}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122816,"metadata":{"connectionId":0,"message":{"method":"Page.frameStoppedLoading","params":{"frameId":"750A05DE8E792041CB3A62061A8AD66C"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425122822,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425122826,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"cdp.receive","timestamp":1588425122831,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextDestroyed","params":{"executionContextId":2},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425122833,"metadata":{"connectionId":0,"message":{"method":"Page.frameDetached","params":{"frameId":"750A05DE8E792041CB3A62061A8AD66C"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425122837,"metadata":{"connectionId":1,"message":{"seq":3362,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/VM633756691","path":"/VM633756691","sourceReference":633756691}}}},"level":0} {"tag":"dap.send","timestamp":1588425122837,"metadata":{"connectionId":1,"message":{"seq":3363,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"/VM633756692","path":"/VM633756692","sourceReference":633756692}}}},"level":0} {"tag":"dap.send","timestamp":1588425122847,"metadata":{"connectionId":0,"message":{"seq":33,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081202.847580:INFO:CONSOLE(104)] \"%c[Extension Host] %c/Users/roblou/code/notebook-extension-samples/notebook-provider %c(at activate (/Users/roblou/code/notebook-extension-samples/notebook-provider/dist/extension.js:103:13)) color: blue color: color: grey\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425122848,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %c/Users/roblou/code/notebook-extension-samples/notebook-provider %c(at activate (/Users/roblou/code/notebook-extension-samples/notebook-provider/dist/extension.js:103:13))"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"color: grey"}],"executionContextId":1,"timestamp":1588425122847.382,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425122849,"metadata":{"connectionId":1,"message":{"seq":3364,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0m/Users/roblou/code/notebook-extension-samples/notebook-provider \u001b[0m\u001b[38;5;244m(at activate (/Users/roblou/code/notebook-extension-samples/notebook-provider/dist/extension.js:103:13))\u001b[0m\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425123107,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"41357F0C712668BB0B423FB2A9D21DA9","type":"webview","title":"data:text/html;charset=utf-8,<%21DOCTYPE html>%0D%0A%0D%0A%0D%0AVirtual Document<%2Ftitle>%0D%0A<%2Fhead>%0D%0A<body style%3D\"margin%3A 0%3B overflow%3A hidden%3B width%3A 100%25%3B height%3A 100%25\" role%3D\"document\">%0D%0A<%2Fbody>%0D%0A<%2Fhtml>","url":"data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%20role%3D%22document%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E","attached":false,"browserContextId":"046618A2DD4586A299BCD350062B3F31"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425123237,"metadata":{"connectionId":0,"message":{"seq":34,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.4,"max":0.2,"avg":0.1,"stddev":0.1,"count":3,"failed":0},"Runtime.consoleAPICalled.errors":[],"Page.frameAttached":{"operation":"Page.frameAttached","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Page.frameAttached.errors":[],"Target.targetCreated":{"operation":"Target.targetCreated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Target.targetCreated.errors":[],"Page.frameStartedLoading":{"operation":"Page.frameStartedLoading","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.frameStartedLoading.errors":[],"Page.frameNavigated":{"operation":"Page.frameNavigated","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Page.frameNavigated.errors":[],"Runtime.executionContextCreated":{"operation":"Runtime.executionContextCreated","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Runtime.executionContextCreated.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0,"avg":0,"stddev":0,"count":2,"failed":0},"Debugger.scriptParsed.errors":[],"Page.frameStoppedLoading":{"operation":"Page.frameStoppedLoading","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Page.frameStoppedLoading.errors":[],"Runtime.executionContextDestroyed":{"operation":"Runtime.executionContextDestroyed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Runtime.executionContextDestroyed.errors":[],"Page.frameDetached":{"operation":"Page.frameDetached","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Page.frameDetached.errors":[],"Target.targetInfoChanged":{"operation":"Target.targetInfoChanged","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Target.targetInfoChanged.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425128040,"metadata":{"connectionId":0,"message":{"seq":35,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081208.040384:INFO:CONSOLE(144)] \"%c ERR color: #f33 An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\", source: file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js (144)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425128041,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c ERR"},{"type":"string","value":"color: #f33"},{"type":"string","value":"An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58"}],"executionContextId":1,"timestamp":1588425128038.155,"stackTrace":{"callFrames":[{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":143,"columnNumber":24},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":251,"columnNumber":27},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":299,"columnNumber":28},{"functionName":"handleUnexpectedError","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":52,"columnNumber":23},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":30,"columnNumber":61},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":42,"columnNumber":17},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":59,"columnNumber":33},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":25,"columnNumber":25}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425128042,"metadata":{"connectionId":1,"message":{"seq":3365,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;203m ERR\u001b[0m An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\n","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0},"line":197,"column":12}}},"level":0} {"tag":"dap.send","timestamp":1588425131969,"metadata":{"connectionId":0,"message":{"seq":36,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081211.969498:INFO:CONSOLE(144)] \"%c ERR color: #f33 An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\", source: file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js (144)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425131969,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c ERR"},{"type":"string","value":"color: #f33"},{"type":"string","value":"An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58"}],"executionContextId":1,"timestamp":1588425131969.2659,"stackTrace":{"callFrames":[{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":143,"columnNumber":24},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":251,"columnNumber":27},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":299,"columnNumber":28},{"functionName":"handleUnexpectedError","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":52,"columnNumber":23},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":30,"columnNumber":61},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":42,"columnNumber":17},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":59,"columnNumber":33},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":25,"columnNumber":25}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425131971,"metadata":{"connectionId":1,"message":{"seq":3366,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;203m ERR\u001b[0m An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\n","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0},"line":197,"column":12}}},"level":0} {"tag":"dap.send","timestamp":1588425133041,"metadata":{"connectionId":0,"message":{"seq":37,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Runtime.consoleAPICalled.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425133872,"metadata":{"connectionId":0,"message":{"seq":38,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081213.872099:INFO:CONSOLE(144)] \"%c ERR color: #f33 An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\", source: file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js (144)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425133872,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c ERR"},{"type":"string","value":"color: #f33"},{"type":"string","value":"An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58"}],"executionContextId":1,"timestamp":1588425133871.765,"stackTrace":{"callFrames":[{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":143,"columnNumber":24},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":251,"columnNumber":27},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":299,"columnNumber":28},{"functionName":"handleUnexpectedError","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":52,"columnNumber":23},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":30,"columnNumber":61},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":42,"columnNumber":17},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":59,"columnNumber":33},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":25,"columnNumber":25}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425133874,"metadata":{"connectionId":1,"message":{"seq":3367,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;203m ERR\u001b[0m An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\n","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0},"line":197,"column":12}}},"level":0} {"tag":"dap.send","timestamp":1588425136399,"metadata":{"connectionId":0,"message":{"seq":39,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081216.399154:INFO:CONSOLE(144)] \"%c ERR color: #f33 An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\", source: file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js (144)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425136399,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c ERR"},{"type":"string","value":"color: #f33"},{"type":"string","value":"An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58"}],"executionContextId":1,"timestamp":1588425136398.896,"stackTrace":{"callFrames":[{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":143,"columnNumber":24},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":251,"columnNumber":27},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":299,"columnNumber":28},{"functionName":"handleUnexpectedError","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":52,"columnNumber":23},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":30,"columnNumber":61},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":42,"columnNumber":17},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":59,"columnNumber":33},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":25,"columnNumber":25}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425136400,"metadata":{"connectionId":1,"message":{"seq":3368,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;203m ERR\u001b[0m An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\n","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0},"line":197,"column":12}}},"level":0} {"tag":"dap.send","timestamp":1588425138877,"metadata":{"connectionId":0,"message":{"seq":40,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Runtime.consoleAPICalled.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425142317,"metadata":{"connectionId":0,"message":{"method":"Target.targetDestroyed","params":{"targetId":"41357F0C712668BB0B423FB2A9D21DA9"},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425143093,"metadata":{"connectionId":0,"message":{"seq":41,"type":"event","event":"output","body":{"category":"stderr","output":"Debugger listening on ws://127.0.0.1:5876/d7bdcff4-e01d-4315-8cbc-41d3c6072cdd\nFor help, see: https://nodejs.org/en/docs/inspector\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425143533,"metadata":{"connectionId":0,"message":{"method":"Page.frameAttached","params":{"frameId":"FA7D1350E47879A33913302C94F52373","parentFrameId":"254836B4DC9A828F1D61559A5ED12885","stack":{"callFrames":[{"functionName":"attachModel","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":363,"columnNumber":91},{"functionName":"setInput","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":317,"columnNumber":31},{"functionName":"processTicksAndRejections","scriptId":"29","url":"internal/process/task_queues.js","lineNumber":84,"columnNumber":4}],"parent":{"description":"async function","callFrames":[{"functionName":"setInput","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":313,"columnNumber":28},{"functionName":"doSetInput","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":131,"columnNumber":37},{"functionName":"openEditor","scriptId":"1283","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorControl.js","lineNumber":49,"columnNumber":49},{"functionName":"","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":667,"columnNumber":68},{"functionName":"doShowEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":679,"columnNumber":22},{"functionName":"doOpenEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":651,"columnNumber":46},{"functionName":"openEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":592,"columnNumber":62},{"functionName":"openEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":392,"columnNumber":75},{"functionName":"onEditorOpening","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":115,"columnNumber":62},{"functionName":"open","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":72,"columnNumber":63},{"functionName":"onGroupWillOpenEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":380,"columnNumber":43},{"functionName":"","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":117,"columnNumber":25},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"openEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":586,"columnNumber":39},{"functionName":"openEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":392,"columnNumber":75},{"functionName":"onEditorOpening","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":141,"columnNumber":54},{"functionName":"open","scriptId":"291","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebook.contribution.js","lineNumber":72,"columnNumber":63},{"functionName":"onGroupWillOpenEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":380,"columnNumber":43},{"functionName":"","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":117,"columnNumber":25},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"openEditor","scriptId":"736","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js","lineNumber":586,"columnNumber":39},{"functionName":"openEditor","scriptId":"264","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/editor/browser/editorService.js","lineNumber":392,"columnNumber":75},{"functionName":"openAnything","scriptId":"860","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js","lineNumber":697,"columnNumber":45},{"functionName":"accept","scriptId":"860","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/search/browser/anythingQuickAccess.js","lineNumber":677,"columnNumber":53},{"functionName":"","scriptId":"1328","url":"file:///Users/roblou/code/vscode/out/vs/platform/quickinput/browser/pickerQuickAccess.js","lineNumber":184,"columnNumber":29},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"","scriptId":"1317","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js","lineNumber":515,"columnNumber":48},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"","scriptId":"1317","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/quickinput/browser/quickInput.js","lineNumber":965,"columnNumber":52}]}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143544,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"112F1C3343A202FBBDA6CF5ABB63DAE6","type":"page","title":"","url":"","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143577,"metadata":{"connectionId":0,"message":{"method":"Page.frameStartedLoading","params":{"frameId":"FA7D1350E47879A33913302C94F52373"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143578,"metadata":{"connectionId":0,"message":{"method":"Page.frameNavigated","params":{"frame":{"id":"FA7D1350E47879A33913302C94F52373","parentId":"254836B4DC9A828F1D61559A5ED12885","loaderId":"1ECAC1443A2F514F2077BD6E3787D594","name":"","url":"about:blank","securityOrigin":"://","mimeType":"text/html"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143578,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextCreated","params":{"context":{"id":3,"origin":"file://","name":"","auxData":{"isDefault":true,"type":"default","frameId":"FA7D1350E47879A33913302C94F52373"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143578,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1604","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":3,"hash":"0ae1b0392799aa433c3ff667cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"FA7D1350E47879A33913302C94F52373"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"attachModel","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":363,"columnNumber":91}],"parentId":{"id":"103"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143578,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1605","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":3,"hash":"0ae1b0392799aa433c3ff667cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"FA7D1350E47879A33913302C94F52373"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"attachModel","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":363,"columnNumber":91}],"parentId":{"id":"103"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143579,"metadata":{"connectionId":0,"message":{"method":"Page.frameStoppedLoading","params":{"frameId":"FA7D1350E47879A33913302C94F52373"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425143583,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425143584,"metadata":{"connectionId":1,"message":{"seq":3369,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756693","path":"<eval>/VM633756693","sourceReference":633756693}}}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425143585,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425143585,"metadata":{"connectionId":1,"message":{"seq":3370,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756694","path":"<eval>/VM633756694","sourceReference":633756694}}}},"level":0} {"tag":"dap.send","timestamp":1588425143602,"metadata":{"connectionId":0,"message":{"seq":42,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081223.602028:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%202?%7B%22cell%22%3A1%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425143603,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%202?%7B%22cell%22%3A1%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425143601.779,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425143604,"metadata":{"connectionId":0,"message":{"seq":43,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081223.604224:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%203?%7B%22cell%22%3A2%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425143604,"metadata":{"connectionId":1,"message":{"seq":3371,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%202?%7B%22cell%22%3A1%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425143609,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%203?%7B%22cell%22%3A2%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425143603.951,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425143611,"metadata":{"connectionId":1,"message":{"seq":3372,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%203?%7B%22cell%22%3A2%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425143619,"metadata":{"connectionId":0,"message":{"method":"Runtime.executionContextDestroyed","params":{"executionContextId":3},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425143619,"metadata":{"connectionId":0,"message":{"method":"Page.frameDetached","params":{"frameId":"FA7D1350E47879A33913302C94F52373"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425143638,"metadata":{"connectionId":0,"message":{"seq":44,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081223.638175:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%201?%7B%22cell%22%3A0%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425143640,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%201?%7B%22cell%22%3A0%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425143637.9722,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425143642,"metadata":{"connectionId":1,"message":{"seq":3373,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%201?%7B%22cell%22%3A0%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425143778,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"112F1C3343A202FBBDA6CF5ABB63DAE6","type":"webview","title":"data:text/html;charset=utf-8,<%21DOCTYPE html>%0D%0A<html lang%3D\"en\" style%3D\"width%3A 100%25%3B height%3A 100%25\">%0D%0A<head>%0D%0A<title>Virtual Document<%2Ftitle>%0D%0A<%2Fhead>%0D%0A<body style%3D\"margin%3A 0%3B overflow%3A hidden%3B width%3A 100%25%3B height%3A 100%25\" role%3D\"document\">%0D%0A<%2Fbody>%0D%0A<%2Fhtml>","url":"data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%20role%3D%22document%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425147322,"metadata":{"connectionId":0,"message":{"seq":45,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Target.targetDestroyed":{"operation":"Target.targetDestroyed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Target.targetDestroyed.errors":[],"Page.frameAttached":{"operation":"Page.frameAttached","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Page.frameAttached.errors":[],"Target.targetCreated":{"operation":"Target.targetCreated","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Target.targetCreated.errors":[],"Page.frameStartedLoading":{"operation":"Page.frameStartedLoading","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.frameStartedLoading.errors":[],"Page.frameNavigated":{"operation":"Page.frameNavigated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Page.frameNavigated.errors":[],"Runtime.executionContextCreated":{"operation":"Runtime.executionContextCreated","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Runtime.executionContextCreated.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Debugger.scriptParsed.errors":[],"Page.frameStoppedLoading":{"operation":"Page.frameStoppedLoading","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Page.frameStoppedLoading.errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.5,"max":0.2,"avg":0.2,"stddev":0.1,"count":3,"failed":0},"Runtime.consoleAPICalled.errors":[],"Runtime.executionContextDestroyed":{"operation":"Runtime.executionContextDestroyed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Runtime.executionContextDestroyed.errors":[],"Page.frameDetached":{"operation":"Page.frameDetached","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Page.frameDetached.errors":[],"Target.targetInfoChanged":{"operation":"Target.targetInfoChanged","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Target.targetInfoChanged.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425179303,"metadata":{"connectionId":0,"message":{"seq":46,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081259.303718:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%204?%7B%22cell%22%3A3%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425179304,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%204?%7B%22cell%22%3A3%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425179303.4912,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425179305,"metadata":{"connectionId":0,"message":{"seq":47,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081259.305558:INFO:CONSOLE(104)] \"%c[Extension Host] %cCLOSE color: blue color: vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%205?%7B%22cell%22%3A4%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\", source: file:///Users/roblou/code/vscode/out/vs/base/common/console.js (104)\n"}}},"level":0} {"tag":"dap.send","timestamp":1588425179306,"metadata":{"connectionId":1,"message":{"seq":3374,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%204?%7B%22cell%22%3A3%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425179306,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c[Extension Host] %cCLOSE"},{"type":"string","value":"color: blue"},{"type":"string","value":"color: "},{"type":"string","value":"vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%205?%7B%22cell%22%3A4%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D"},{"type":"string","value":"(at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)"}],"executionContextId":1,"timestamp":1588425179305.174,"stackTrace":{"callFrames":[{"functionName":"log","scriptId":"1023","url":"file:///Users/roblou/code/vscode/out/vs/base/common/console.js","lineNumber":103,"columnNumber":32},{"functionName":"$logExtensionHostMessage","scriptId":"677","url":"file:///Users/roblou/code/vscode/out/vs/workbench/api/browser/mainThreadConsole.js","lineNumber":33,"columnNumber":30},{"functionName":"_doInvokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":335,"columnNumber":30},{"functionName":"_invokeHandler","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":320,"columnNumber":48},{"functionName":"_receiveRequest","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":247,"columnNumber":35},{"functionName":"_receiveOneMessage","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":175,"columnNumber":29},{"functionName":"","scriptId":"1078","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/extensions/common/rpcProtocol.js","lineNumber":65,"columnNumber":55},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fire","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":361,"columnNumber":34},{"functionName":"_receiveMessage","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":580,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":454,"columnNumber":82},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"acceptChunk","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":187,"columnNumber":36},{"functionName":"","scriptId":"1070","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/common/ipc.net.js","lineNumber":156,"columnNumber":60},{"functionName":"listener","scriptId":"503","url":"file:///Users/roblou/code/vscode/out/vs/base/parts/ipc/node/ipc.net.js","lineNumber":16,"columnNumber":39},{"functionName":"emit","scriptId":"18","url":"events.js","lineNumber":202,"columnNumber":12},{"functionName":"addChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":294,"columnNumber":11},{"functionName":"readableAddChunk","scriptId":"83","url":"_stream_readable.js","lineNumber":275,"columnNumber":10},{"functionName":"Readable.push","scriptId":"83","url":"_stream_readable.js","lineNumber":209,"columnNumber":9},{"functionName":"onStreamRead","scriptId":"182","url":"internal/stream_base_commons.js","lineNumber":165,"columnNumber":16}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425179308,"metadata":{"connectionId":1,"message":{"seq":3375,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;21m[Extension Host] \u001b[0mCLOSE\u001b[0m vscode-notebook:/Users/roblou/code/notebook-test/test/hello.test.ipynb%2C%20cell%205?%7B%22cell%22%3A4%2C%22notebook%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%2Ftest%2Fhello.test.ipynb%22%7D (at /Users/roblou/code/notebook-extension-samples/notebook-regexper/dist/extension.js:124:17)\n","source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/console.ts","sourceReference":0},"line":137,"column":35}}},"level":0} {"tag":"cdp.receive","timestamp":1588425179607,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"73F9D57B633199214E1AAC6C2AEF2E8F","type":"webview","title":"","url":"","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425179615,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"73F9D57B633199214E1AAC6C2AEF2E8F","type":"webview","title":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","url":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181273,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.228","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"data:image/png;base64,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","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"Low","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":547863.329855,"wallTime":1588425181.205469,"initiator":{"type":"script","stack":{"callFrames":[],"parent":{"description":"Image","callFrames":[{"functionName":"renderPNG","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":148,"columnNumber":26},{"functionName":"render","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":59,"columnNumber":23},{"functionName":"render","scriptId":"1103","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","lineNumber":36,"columnNumber":33},{"functionName":"renderOutput","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":267,"columnNumber":73},{"functionName":"CodeCell","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":189,"columnNumber":29},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":58,"columnNumber":30},{"functionName":"renderElement","scriptId":"1107","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","lineNumber":670,"columnNumber":65},{"functionName":"renderElement","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":733,"columnNumber":25},{"functionName":"insertItemInDOM","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":472,"columnNumber":29},{"functionName":"render","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":428,"columnNumber":29},{"functionName":"onScroll","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":601,"columnNumber":25},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":459,"columnNumber":44},{"functionName":"","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":113,"columnNumber":31},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"_setState","scriptId":"1505","url":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js","lineNumber":213,"columnNumber":27},{"functionName":"setScrollPositionNow","scriptId":"1505","url":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js","lineNumber":148,"columnNumber":17},{"functionName":"_onMouseWheel","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":298,"columnNumber":41},{"functionName":"onMouseWheel","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":241,"columnNumber":25}]}}},"type":"Image","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181274,"metadata":{"connectionId":0,"message":{"method":"Network.requestServedFromCache","params":{"requestId":"7822.228"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181274,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.228","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":547863.329927,"type":"Image","response":{"url":"data:image/png;base64,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","status":200,"statusText":"OK","headers":{"Content-Type":"image/png"},"mimeType":"image/png","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":0,"protocol":"data","securityState":"unknown"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181274,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.228","timestamp":547863.329929,"dataLength":7786,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181274,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.228","timestamp":547863.32993,"encodedDataLength":0,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181566,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"2DB909127823319138068DEB1F7CF575","type":"webview","title":"","url":"","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425181574,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"2DB909127823319138068DEB1F7CF575","type":"webview","title":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","url":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425184307,"metadata":{"connectionId":0,"message":{"seq":48,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.3,"max":0.2,"avg":0.1,"stddev":0,"count":2,"failed":0},"Runtime.consoleAPICalled.errors":[],"Target.targetCreated":{"operation":"Target.targetCreated","totalTime":0.6,"max":0.4,"avg":0.3,"stddev":0.2,"count":2,"failed":0},"Target.targetCreated.errors":[],"Target.targetInfoChanged":{"operation":"Target.targetInfoChanged","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Target.targetInfoChanged.errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Network.requestWillBeSent.errors":[],"Network.requestServedFromCache":{"operation":"Network.requestServedFromCache","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.requestServedFromCache.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.loadingFinished.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425274252,"metadata":{"connectionId":0,"message":{"seq":49,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081434.252171:INFO:CONSOLE(144)] \"%c ERR color: #f33 An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\", source: file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js (144)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425274254,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c ERR"},{"type":"string","value":"color: #f33"},{"type":"string","value":"An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58"}],"executionContextId":1,"timestamp":1588425274251.899,"stackTrace":{"callFrames":[{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":143,"columnNumber":24},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":251,"columnNumber":27},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":299,"columnNumber":28},{"functionName":"handleUnexpectedError","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":52,"columnNumber":23},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":30,"columnNumber":61},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":42,"columnNumber":17},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":59,"columnNumber":33},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":25,"columnNumber":25}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425274257,"metadata":{"connectionId":1,"message":{"seq":3376,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;203m ERR\u001b[0m An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\n","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0},"line":197,"column":12}}},"level":0} {"tag":"dap.send","timestamp":1588425279258,"metadata":{"connectionId":0,"message":{"seq":50,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Runtime.consoleAPICalled.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425303640,"metadata":{"connectionId":0,"message":{"seq":51,"type":"event","event":"output","body":{"category":"stderr","output":"[7810:0502/081503.640046:INFO:CONSOLE(144)] \"%c ERR color: #f33 An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\", source: file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js (144)\n"}}},"level":0} {"tag":"cdp.receive","timestamp":1588425303640,"metadata":{"connectionId":0,"message":{"method":"Runtime.consoleAPICalled","params":{"type":"log","args":[{"type":"string","value":"%c ERR"},{"type":"string","value":"color: #f33"},{"type":"string","value":"An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58"}],"executionContextId":1,"timestamp":1588425303638.739,"stackTrace":{"callFrames":[{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":143,"columnNumber":24},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":251,"columnNumber":27},{"functionName":"error","scriptId":"377","url":"file:///Users/roblou/code/vscode/out/vs/platform/log/common/log.js","lineNumber":299,"columnNumber":28},{"functionName":"handleUnexpectedError","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":52,"columnNumber":23},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":30,"columnNumber":61},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":42,"columnNumber":17},{"functionName":"onUnexpectedError","scriptId":"381","url":"file:///Users/roblou/code/vscode/out/vs/base/common/errors.js","lineNumber":59,"columnNumber":33},{"functionName":"","scriptId":"397","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/workbench.js","lineNumber":25,"columnNumber":25}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425303642,"metadata":{"connectionId":1,"message":{"seq":3377,"type":"event","event":"output","body":{"category":"stdout","output":"\u001b[0m\u001b[38;5;203m ERR\u001b[0m An unknown error occurred. Please consult the log for more details.: Error\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:180:23)\n at Object.backup (file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditorInput.js:101:45)\n at file:///Users/roblou/code/vscode/out/vs/workbench/contrib/backup/common/backupTracker.js:91:58\n","source":{"name":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","path":"/Users/roblou/code/vscode/src/vs/platform/log/common/log.ts","sourceReference":0},"line":197,"column":12}}},"level":0} {"tag":"dap.send","timestamp":1588425308645,"metadata":{"connectionId":0,"message":{"seq":52,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Runtime.consoleAPICalled":{"operation":"Runtime.consoleAPICalled","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Runtime.consoleAPICalled.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425321067,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.235","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"data:image/png;base64,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","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"Low","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":548003.175786,"wallTime":1588425321.04637,"initiator":{"type":"script","stack":{"callFrames":[],"parent":{"description":"Image","callFrames":[{"functionName":"renderPNG","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":148,"columnNumber":26},{"functionName":"render","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":59,"columnNumber":23},{"functionName":"render","scriptId":"1103","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","lineNumber":36,"columnNumber":33},{"functionName":"renderOutput","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":267,"columnNumber":73},{"functionName":"CodeCell","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":189,"columnNumber":29},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":58,"columnNumber":30},{"functionName":"renderElement","scriptId":"1107","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","lineNumber":670,"columnNumber":65},{"functionName":"renderElement","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":733,"columnNumber":25},{"functionName":"insertItemInDOM","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":472,"columnNumber":29},{"functionName":"_splice","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":288,"columnNumber":29},{"functionName":"splice","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":227,"columnNumber":32},{"functionName":"","scriptId":"1150","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","lineNumber":13,"columnNumber":44},{"functionName":"splice","scriptId":"1150","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","lineNumber":13,"columnNumber":29},{"functionName":"","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":958,"columnNumber":70},{"functionName":"bufferEvents","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":657,"columnNumber":22},{"functionName":"splice","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":958,"columnNumber":35},{"functionName":"splice2","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":251,"columnNumber":22},{"functionName":"","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":244,"columnNumber":25},{"functionName":"updateHiddenAreasInView","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":231,"columnNumber":36},{"functionName":"setHiddenAreas","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":214,"columnNumber":25},{"functionName":"setHiddenAreas","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":588,"columnNumber":33},{"functionName":"_updateEditorFoldingRanges","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":63,"columnNumber":37},{"functionName":"setFoldingState","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":55,"columnNumber":21},{"functionName":"run","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":124,"columnNumber":27},{"functionName":"handler","scriptId":"203","url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","lineNumber":292,"columnNumber":51},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"_tryExecuteCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":74,"columnNumber":62},{"functionName":"","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":50}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}}}},"type":"Image","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425321068,"metadata":{"connectionId":0,"message":{"method":"Network.requestServedFromCache","params":{"requestId":"7822.235"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425321068,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.235","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":548003.175852,"type":"Image","response":{"url":"data:image/png;base64,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","status":200,"statusText":"OK","headers":{"Content-Type":"image/png"},"mimeType":"image/png","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":0,"protocol":"data","securityState":"unknown"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425321069,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.235","timestamp":548003.175854,"dataLength":7786,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425321069,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.235","timestamp":548003.175855,"encodedDataLength":0,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425321131,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"213E1C4C85490DBB9B7DA4D076AA704E","type":"webview","title":"","url":"","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425321140,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"213E1C4C85490DBB9B7DA4D076AA704E","type":"webview","title":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","url":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425322110,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"2547036393F7FF938D8F96A7402CC79B","type":"webview","title":"","url":"","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425322118,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"2547036393F7FF938D8F96A7402CC79B","type":"webview","title":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","url":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425323363,"metadata":{"connectionId":0,"message":{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"095092E49BF9D2FE003BA5969766F43F","type":"webview","title":"","url":"","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"cdp.receive","timestamp":1588425323376,"metadata":{"connectionId":0,"message":{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"095092E49BF9D2FE003BA5969766F43F","type":"webview","title":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","url":"https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html","attached":false,"browserContextId":"DF7A6E3CECD10A6B39BABE0FF08AF518"}},"sessionId":"1DF75FCD99CBA1ADA076FD75AB90A98F"}},"level":0} {"tag":"dap.send","timestamp":1588425326070,"metadata":{"connectionId":0,"message":{"seq":53,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"Network.requestWillBeSent.errors":[],"Network.requestServedFromCache":{"operation":"Network.requestServedFromCache","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.requestServedFromCache.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.loadingFinished.errors":[],"Target.targetCreated":{"operation":"Target.targetCreated","totalTime":0.5,"max":0.2,"avg":0.2,"stddev":0,"count":3,"failed":0},"Target.targetCreated.errors":[],"Target.targetInfoChanged":{"operation":"Target.targetInfoChanged","totalTime":0.3,"max":0.1,"avg":0.1,"stddev":0,"count":3,"failed":0},"Target.targetInfoChanged.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425354681,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"lines":[221],"breakpoints":[{"line":221}],"sourceModified":false},"type":"request","seq":7}},"level":0} {"tag":"dap.send","timestamp":1588425354682,"metadata":{"connectionId":0,"message":{"seq":54,"type":"response","request_seq":7,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":1,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425354682,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","sourceReference":0},"lines":[221],"breakpoints":[{"line":221}],"sourceModified":false},"type":"request","seq":8}},"level":0} {"tag":"cdp.send","timestamp":1588425354684,"metadata":{"connectionId":0,"message":{"id":44,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425354690,"metadata":{"connectionId":0,"message":{"id":45,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"812","lineNumber":0,"columnNumber":0}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425354691,"metadata":{"connectionId":0,"message":{"id":46,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","lineNumber":220,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425354692,"metadata":{"connectionId":0,"message":{"id":47,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"812","lineNumber":179,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425354693,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"lines":[221],"breakpoints":[{"line":221}],"sourceModified":false},"type":"request","seq":8}},"level":0} {"tag":"cdp.send","timestamp":1588425354694,"metadata":{"connectionId":0,"message":{"id":48,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425354695,"metadata":{"connectionId":0,"message":{"id":49,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","lineNumber":220,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425354705,"metadata":{"connectionId":0,"message":{"id":48,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425354705,"metadata":{"connectionId":0,"message":{"id":49,"result":{"breakpointId":"2:220:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425354709,"metadata":{"connectionId":3,"message":{"seq":80,"type":"response","request_seq":8,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":1,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425354712,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"line":221},"type":"request","seq":8}},"level":0} {"tag":"dap.send","timestamp":1588425354714,"metadata":{"connectionId":0,"message":{"seq":55,"type":"response","request_seq":8,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425354745,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"line":221},"type":"request","seq":9}},"level":0} {"tag":"dap.send","timestamp":1588425354745,"metadata":{"connectionId":0,"message":{"seq":56,"type":"response","request_seq":9,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425354873,"metadata":{"connectionId":0,"message":{"id":44,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425354875,"metadata":{"connectionId":0,"message":{"error":{"code":-32000,"message":"Could not resolve breakpoint"},"id":45,"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425355454,"metadata":{"connectionId":0,"message":{"id":46,"result":{"breakpointId":"2:220:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425355455,"metadata":{"connectionId":0,"message":{"id":47,"result":{"breakpointId":"4:179:16:812","actualLocation":{"scriptId":"812","lineNumber":179,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425355457,"metadata":{"connectionId":1,"message":{"seq":3378,"type":"response","request_seq":8,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":1,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","sourceReference":0},"line":221,"column":3}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425355493,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"line":221},"type":"request","seq":10}},"level":0} {"tag":"dap.send","timestamp":1588425355493,"metadata":{"connectionId":0,"message":{"seq":57,"type":"response","request_seq":10,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425359688,"metadata":{"connectionId":0,"message":{"seq":58,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.8,"max":0.8,"avg":0.8,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":8.9,"max":8.3,"avg":3,"stddev":4.6,"count":3,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425359714,"metadata":{"connectionId":3,"message":{"seq":81,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":16.2,"max":16.2,"avg":16.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425360461,"metadata":{"connectionId":1,"message":{"seq":3379,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":775.7,"max":775.7,"avg":775.7,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425528734,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.236","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"data:image/png;base64,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","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"Low","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":548210.850087,"wallTime":1588425528.713202,"initiator":{"type":"script","stack":{"callFrames":[],"parent":{"description":"Image","callFrames":[{"functionName":"renderPNG","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":148,"columnNumber":26},{"functionName":"render","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":59,"columnNumber":23},{"functionName":"render","scriptId":"1103","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","lineNumber":36,"columnNumber":33},{"functionName":"renderOutput","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":267,"columnNumber":73},{"functionName":"CodeCell","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":189,"columnNumber":29},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":58,"columnNumber":30},{"functionName":"renderElement","scriptId":"1107","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","lineNumber":670,"columnNumber":65},{"functionName":"renderElement","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":733,"columnNumber":25},{"functionName":"insertItemInDOM","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":472,"columnNumber":29},{"functionName":"_splice","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":288,"columnNumber":29},{"functionName":"splice","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":227,"columnNumber":32},{"functionName":"","scriptId":"1150","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","lineNumber":13,"columnNumber":44},{"functionName":"splice","scriptId":"1150","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/splice.js","lineNumber":13,"columnNumber":29},{"functionName":"","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":958,"columnNumber":70},{"functionName":"bufferEvents","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":657,"columnNumber":22},{"functionName":"splice","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":958,"columnNumber":35},{"functionName":"splice2","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":251,"columnNumber":22},{"functionName":"","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":244,"columnNumber":25},{"functionName":"updateHiddenAreasInView","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":231,"columnNumber":36},{"functionName":"setHiddenAreas","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":214,"columnNumber":25},{"functionName":"setHiddenAreas","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":588,"columnNumber":33},{"functionName":"_updateEditorFoldingRanges","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":63,"columnNumber":37},{"functionName":"setFoldingState","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":55,"columnNumber":21},{"functionName":"onMouseUp","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":86,"columnNumber":25},{"functionName":"","scriptId":"816","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","lineNumber":15,"columnNumber":74},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"","scriptId":"542","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","lineNumber":250,"columnNumber":40},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":43,"columnNumber":92},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"fn","scriptId":"589","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/event.js","lineNumber":9,"columnNumber":34}]}}},"type":"Image","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425528734,"metadata":{"connectionId":0,"message":{"method":"Network.requestServedFromCache","params":{"requestId":"7822.236"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425528735,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.236","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":548210.850148,"type":"Image","response":{"url":"data:image/png;base64,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","status":200,"statusText":"OK","headers":{"Content-Type":"image/png"},"mimeType":"image/png","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":0,"protocol":"data","securityState":"unknown"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425528735,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.236","timestamp":548210.85015,"dataLength":7786,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425528735,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.236","timestamp":548210.850152,"encodedDataLength":0,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425533740,"metadata":{"connectionId":0,"message":{"seq":59,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":0.8,"max":0.8,"avg":0.8,"stddev":null,"count":1,"failed":0},"Network.requestWillBeSent.errors":[],"Network.requestServedFromCache":{"operation":"Network.requestServedFromCache","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Network.requestServedFromCache.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.loadingFinished.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425733454,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":11}},"level":0} {"tag":"dap.send","timestamp":1588425733455,"metadata":{"connectionId":0,"message":{"seq":60,"type":"response","request_seq":11,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425733455,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":9}},"level":0} {"tag":"cdp.send","timestamp":1588425733456,"metadata":{"connectionId":0,"message":{"id":50,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:220:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425733457,"metadata":{"connectionId":0,"message":{"id":51,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:179:16:812"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425733457,"metadata":{"connectionId":1,"message":{"seq":3380,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":1,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588425733458,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookEditorInput.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":9}},"level":0} {"tag":"cdp.send","timestamp":1588425733458,"metadata":{"connectionId":0,"message":{"id":52,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:220:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/notebookEditorInput\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425733461,"metadata":{"connectionId":0,"message":{"id":52,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425733461,"metadata":{"connectionId":0,"message":{"id":50,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425733461,"metadata":{"connectionId":0,"message":{"id":51,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425733767,"metadata":{"connectionId":3,"message":{"seq":82,"type":"response","request_seq":9,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425733768,"metadata":{"connectionId":1,"message":{"seq":3381,"type":"response","request_seq":9,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425738470,"metadata":{"connectionId":0,"message":{"seq":61,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":1.2,"max":1.2,"avg":1.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425738771,"metadata":{"connectionId":3,"message":{"seq":83,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":309.6,"max":309.6,"avg":309.6,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425738771,"metadata":{"connectionId":1,"message":{"seq":3382,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":312.8,"max":312.8,"avg":312.8,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425803395,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts"},"lines":[358],"breakpoints":[{"line":358}],"sourceModified":false},"type":"request","seq":12}},"level":0} {"tag":"dap.send","timestamp":1588425803395,"metadata":{"connectionId":0,"message":{"seq":62,"type":"response","request_seq":12,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":2,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425803395,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"lines":[358],"breakpoints":[{"line":358}],"sourceModified":false},"type":"request","seq":10}},"level":0} {"tag":"cdp.send","timestamp":1588425803397,"metadata":{"connectionId":0,"message":{"id":53,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425803403,"metadata":{"connectionId":0,"message":{"id":54,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"269","lineNumber":0,"columnNumber":0}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425803403,"metadata":{"connectionId":0,"message":{"id":55,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","lineNumber":357,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425803404,"metadata":{"connectionId":0,"message":{"id":56,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"269","lineNumber":271,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425803404,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts"},"lines":[358],"breakpoints":[{"line":358}],"sourceModified":false},"type":"request","seq":10}},"level":0} {"tag":"cdp.send","timestamp":1588425803405,"metadata":{"connectionId":0,"message":{"id":57,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425803405,"metadata":{"connectionId":0,"message":{"id":58,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","lineNumber":357,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425803408,"metadata":{"connectionId":0,"message":{"id":57,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425803410,"metadata":{"connectionId":0,"message":{"id":58,"result":{"breakpointId":"2:357:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425803411,"metadata":{"connectionId":3,"message":{"seq":84,"type":"response","request_seq":10,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":2,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425803421,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts"},"line":358},"type":"request","seq":13}},"level":0} {"tag":"dap.send","timestamp":1588425803421,"metadata":{"connectionId":0,"message":{"seq":63,"type":"response","request_seq":13,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425803493,"metadata":{"connectionId":0,"message":{"id":53,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425803507,"metadata":{"connectionId":0,"message":{"error":{"code":-32000,"message":"Could not resolve breakpoint"},"id":54,"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425803588,"metadata":{"connectionId":0,"message":{"id":55,"result":{"breakpointId":"2:357:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425803687,"metadata":{"connectionId":0,"message":{"id":56,"result":{"breakpointId":"4:271:16:269","actualLocation":{"scriptId":"269","lineNumber":271,"columnNumber":29}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425803792,"metadata":{"connectionId":1,"message":{"seq":3383,"type":"response","request_seq":10,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":2,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"line":358,"column":42}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425803838,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts"},"line":358},"type":"request","seq":14}},"level":0} {"tag":"dap.send","timestamp":1588425803838,"metadata":{"connectionId":0,"message":{"seq":64,"type":"response","request_seq":14,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425806125,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":15}},"level":0} {"tag":"dap.send","timestamp":1588425806125,"metadata":{"connectionId":0,"message":{"seq":65,"type":"response","request_seq":15,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425806125,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":11}},"level":0} {"tag":"cdp.send","timestamp":1588425806125,"metadata":{"connectionId":0,"message":{"id":59,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:357:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425806125,"metadata":{"connectionId":0,"message":{"id":60,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:271:16:269"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425806125,"metadata":{"connectionId":1,"message":{"seq":3384,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":2,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588425806126,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":11}},"level":0} {"tag":"cdp.send","timestamp":1588425806126,"metadata":{"connectionId":0,"message":{"id":61,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:357:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/services\\/keybinding\\/browser\\/keybindingService\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425806126,"metadata":{"connectionId":0,"message":{"id":59,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425806126,"metadata":{"connectionId":0,"message":{"id":60,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425806126,"metadata":{"connectionId":0,"message":{"id":61,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425806128,"metadata":{"connectionId":3,"message":{"seq":85,"type":"response","request_seq":11,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425806128,"metadata":{"connectionId":1,"message":{"seq":3385,"type":"response","request_seq":11,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425808399,"metadata":{"connectionId":0,"message":{"seq":66,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.7,"max":0.5,"avg":0.4,"stddev":0.2,"count":2,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":0.4,"max":0.2,"avg":0.2,"stddev":0.1,"count":2,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425808414,"metadata":{"connectionId":3,"message":{"seq":86,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":9.5,"max":7.3,"avg":4.7,"stddev":3.6,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425808792,"metadata":{"connectionId":1,"message":{"seq":3386,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":399.4,"max":396.5,"avg":199.7,"stddev":278.3,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425827663,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"},"lines":[647],"breakpoints":[{"line":647}],"sourceModified":false},"type":"request","seq":16}},"level":0} {"tag":"dap.send","timestamp":1588425827663,"metadata":{"connectionId":0,"message":{"seq":67,"type":"response","request_seq":16,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":3,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425827663,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"lines":[647],"breakpoints":[{"line":647}],"sourceModified":false},"type":"request","seq":12}},"level":0} {"tag":"cdp.send","timestamp":1588425827663,"metadata":{"connectionId":0,"message":{"id":62,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425827667,"metadata":{"connectionId":0,"message":{"id":63,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"544","lineNumber":0,"columnNumber":0}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425827667,"metadata":{"connectionId":0,"message":{"id":64,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","lineNumber":646,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425827667,"metadata":{"connectionId":0,"message":{"id":65,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"544","lineNumber":541,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425827668,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"},"lines":[647],"breakpoints":[{"line":647}],"sourceModified":false},"type":"request","seq":12}},"level":0} {"tag":"cdp.send","timestamp":1588425827668,"metadata":{"connectionId":0,"message":{"id":66,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425827668,"metadata":{"connectionId":0,"message":{"id":67,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","lineNumber":646,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425827672,"metadata":{"connectionId":0,"message":{"id":66,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425827674,"metadata":{"connectionId":0,"message":{"id":67,"result":{"breakpointId":"2:646:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425827675,"metadata":{"connectionId":3,"message":{"seq":87,"type":"response","request_seq":12,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":3,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425827689,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"},"line":647},"type":"request","seq":17}},"level":0} {"tag":"dap.send","timestamp":1588425827690,"metadata":{"connectionId":0,"message":{"seq":68,"type":"response","request_seq":17,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425827752,"metadata":{"connectionId":0,"message":{"id":62,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425827753,"metadata":{"connectionId":0,"message":{"error":{"code":-32000,"message":"Could not resolve breakpoint"},"id":63,"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425827841,"metadata":{"connectionId":0,"message":{"id":64,"result":{"breakpointId":"2:646:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425827970,"metadata":{"connectionId":0,"message":{"id":65,"result":{"breakpointId":"4:541:12:544","actualLocation":{"scriptId":"544","lineNumber":541,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425828355,"metadata":{"connectionId":1,"message":{"seq":3387,"type":"response","request_seq":12,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":3,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"line":647,"column":3}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425828388,"metadata":{"connectionId":0,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"},"line":647},"type":"request","seq":18}},"level":0} {"tag":"dap.send","timestamp":1588425828388,"metadata":{"connectionId":0,"message":{"seq":69,"type":"response","request_seq":18,"command":"breakpointLocations","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425829382,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":541,"columnNumber":12},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":30}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":31}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":32}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":33}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":34}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":35}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":36}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":37}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":38}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":39}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":40}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":41}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":42}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":43}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":44}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":45}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":46}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":47}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":48}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":49}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":50}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":51}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":52}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":53}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":54}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":55}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":56}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":57}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":58}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":59}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":60}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":61}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":62}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":63}"}}],"reason":"other","hitBreakpoints":["4:541:12:544"],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425829390,"metadata":{"connectionId":1,"message":{"seq":3388,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425829400,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":13}},"level":0} {"tag":"dap.send","timestamp":1588425829400,"metadata":{"connectionId":1,"message":{"seq":3389,"type":"response","request_seq":13,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425829407,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":14}},"level":0} {"tag":"dap.send","timestamp":1588425829408,"metadata":{"connectionId":1,"message":{"seq":3390,"type":"response","request_seq":14,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":438,"name":"run","line":647,"column":3,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":10}}},"level":0} {"tag":"dap.receive","timestamp":1588425829528,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"line":647},"type":"request","seq":15}},"level":0} {"tag":"cdp.send","timestamp":1588425829529,"metadata":{"connectionId":0,"message":{"id":68,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"544","lineNumber":541,"columnNumber":12},"end":{"scriptId":"544","lineNumber":542,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425829530,"metadata":{"connectionId":0,"message":{"id":68,"result":{"locations":[{"scriptId":"544","lineNumber":541,"columnNumber":12},{"scriptId":"544","lineNumber":541,"columnNumber":17,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425829532,"metadata":{"connectionId":1,"message":{"seq":3391,"type":"response","request_seq":15,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":647,"column":3},{"line":647,"column":8}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425829832,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":16}},"level":0} {"tag":"dap.send","timestamp":1588425829832,"metadata":{"connectionId":1,"message":{"seq":3392,"type":"response","request_seq":16,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":439,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"},{"id":440,"name":"invokeFunction","line":61,"column":11,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","sourceReference":0},"presentationHint":"normal"},{"id":441,"name":"_tryExecuteCommand","line":84,"column":46,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0},"presentationHint":"normal"},{"id":442,"name":"<anonymous>","line":73,"column":52,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0},"presentationHint":"normal"},{"id":443,"name":"Promise.then","line":1,"column":1,"presentationHint":"label"},{"id":444,"name":"executeCommand","line":73,"column":37,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0},"presentationHint":"normal"},{"id":445,"name":"_doDispatch","line":200,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":446,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":447,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":10}}},"level":0} {"tag":"dap.receive","timestamp":1588425830800,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":438},"type":"request","seq":17}},"level":0} {"tag":"dap.send","timestamp":1588425830802,"metadata":{"connectionId":1,"message":{"seq":3393,"type":"response","request_seq":17,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: run","presentationHint":"locals","expensive":false,"variablesReference":1,"line":646,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"endLine":655,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":2,"line":14,"column":720,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","sourceReference":570738469},"endLine":1183,"endColumn":2},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":3,"line":1,"column":1,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"endLine":1185,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":4},{"name":"Global","expensive":true,"variablesReference":5}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425830809,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":1},"type":"request","seq":18}},"level":0} {"tag":"cdp.send","timestamp":1588425830809,"metadata":{"connectionId":0,"message":{"id":69,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":30}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425830809,"metadata":{"connectionId":0,"message":{"id":70,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":30}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425830810,"metadata":{"connectionId":0,"message":{"id":69,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425830810,"metadata":{"connectionId":0,"message":{"id":70,"result":{"result":[{"name":"accessor","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":64}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"get","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"context","value":{"type":"undefined"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425830814,"metadata":{"connectionId":1,"message":{"seq":3394,"type":"response","request_seq":18,"command":"variables","success":true,"body":{"variables":[{"name":"accessor","value":"{get: ƒ}","evaluateName":"accessor","type":"object","variablesReference":6},{"name":"context","value":"undefined","evaluateName":"context","type":"undefined","variablesReference":0},{"name":"this","value":"Object","evaluateName":"this","type":"object","variablesReference":7}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425831825,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":19}},"level":0} {"tag":"dap.send","timestamp":1588425831825,"metadata":{"connectionId":0,"message":{"seq":70,"type":"response","request_seq":19,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425831825,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":19}},"level":0} {"tag":"cdp.send","timestamp":1588425831825,"metadata":{"connectionId":0,"message":{"id":71,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:646:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425831826,"metadata":{"connectionId":0,"message":{"id":72,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:541:12:544"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425831826,"metadata":{"connectionId":1,"message":{"seq":3395,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":3,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588425831826,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":13}},"level":0} {"tag":"cdp.send","timestamp":1588425831826,"metadata":{"connectionId":0,"message":{"id":73,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:646:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/contrib\\/coreActions\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425831826,"metadata":{"connectionId":0,"message":{"id":71,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425831826,"metadata":{"connectionId":0,"message":{"id":72,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425831827,"metadata":{"connectionId":0,"message":{"id":73,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425831827,"metadata":{"connectionId":3,"message":{"seq":88,"type":"response","request_seq":13,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425831829,"metadata":{"connectionId":1,"message":{"seq":3396,"type":"response","request_seq":19,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425832667,"metadata":{"connectionId":0,"message":{"seq":71,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.4,"max":0.2,"avg":0.2,"stddev":0,"count":2,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":0.4,"max":0.3,"avg":0.2,"stddev":0.1,"count":2,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425832675,"metadata":{"connectionId":3,"message":{"seq":89,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":9,"max":7.8,"avg":4.5,"stddev":4.7,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425833354,"metadata":{"connectionId":1,"message":{"seq":3397,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":695.5,"max":692,"avg":347.7,"stddev":486.8,"count":2,"failed":0},"setBreakpoints.errors":[],"threads":{"operation":"threads","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":1.5,"max":1.2,"avg":0.8,"stddev":0.6,"count":2,"failed":0},"stackTrace.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":3.4,"max":3.4,"avg":3.4,"stddev":null,"count":1,"failed":0},"breakpointLocations.errors":[],"scopes":{"operation":"scopes","totalTime":2.5,"max":2.5,"avg":2.5,"stddev":null,"count":1,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":5.2,"max":5.2,"avg":5.2,"stddev":null,"count":1,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425834384,"metadata":{"connectionId":0,"message":{"seq":72,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425834897,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":444},"type":"request","seq":20}},"level":0} {"tag":"dap.send","timestamp":1588425834898,"metadata":{"connectionId":1,"message":{"seq":3398,"type":"response","request_seq":20,"command":"scopes","success":false,"body":{"error":{"id":9234,"format":"Variables not available in async stacks","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588425836159,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":445},"type":"request","seq":21}},"level":0} {"tag":"dap.send","timestamp":1588425836159,"metadata":{"connectionId":1,"message":{"seq":3399,"type":"response","request_seq":21,"command":"scopes","success":false,"body":{"error":{"id":9234,"format":"Variables not available in async stacks","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588425838765,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"command.\"","frameId":445,"context":"hover"},"type":"request","seq":22}},"level":0} {"tag":"dap.send","timestamp":1588425838765,"metadata":{"connectionId":1,"message":{"seq":3400,"type":"response","request_seq":22,"command":"evaluate","success":false,"message":"Unable to evaluate on async stack frame","body":{"error":{"id":9222,"format":"Unable to evaluate on async stack frame","showUser":false}}}},"level":0} {"tag":"dap.send","timestamp":1588425839903,"metadata":{"connectionId":1,"message":{"seq":3401,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"scopes":{"operation":"scopes","totalTime":1,"max":0.6,"avg":0.5,"stddev":0,"count":2,"failed":2},"scopes.errors":[{"error":{"message":"Variables not available in async stacks","name":"Error","stack":"Error: Variables not available in async stacks\n\tat d.scopes (extension.js:73:50665)\n\tat k.scopes (extension.js:21:241137)\n\tat extension.js:73:29514\n\tat x._withThread (extension.js:73:33901)\n\tat extension.js:73:29497\n\tat a._onMessage (extension.js:15:2438336)\n\tat extension.js:15:2436853\n\tat t.EventEmitter.fire (extension.js:1:14428)\n\tat Socket._handleData (extension.js:94:10042)\n\tat Socket.emit (events.js:203:13)\n\tat Socket.EventEmitter.emit (domain.js:476:20)\n\tat addChunk (_stream_readable.js:295:12)\n\tat readableAddChunk (_stream_readable.js:276:11)\n\tat Socket.Readable.push (_stream_readable.js:210:10)\n\tat TCP.onStreamRead (internal/stream_base_commons.js:166:17)"}},{"error":{"message":"Variables not available in async stacks","name":"Error","stack":"Error: Variables not available in async stacks\n\tat d.scopes (extension.js:73:50665)\n\tat k.scopes (extension.js:21:241137)\n\tat extension.js:73:29514\n\tat x._withThread (extension.js:73:33901)\n\tat extension.js:73:29497\n\tat a._onMessage (extension.js:15:2438336)\n\tat extension.js:15:2436853\n\tat t.EventEmitter.fire (extension.js:1:14428)\n\tat Socket._handleData (extension.js:94:10042)\n\tat Socket.emit (events.js:203:13)\n\tat Socket.EventEmitter.emit (domain.js:476:20)\n\tat addChunk (_stream_readable.js:295:12)\n\tat readableAddChunk (_stream_readable.js:276:11)\n\tat Socket.Readable.push (_stream_readable.js:210:10)\n\tat TCP.onStreamRead (internal/stream_base_commons.js:166:17)"}}],"evaluate":{"operation":"evaluate","totalTime":0.6,"max":0.6,"avg":0.6,"stddev":null,"count":1,"failed":0},"evaluate.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425842804,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":446},"type":"request","seq":23}},"level":0} {"tag":"dap.send","timestamp":1588425842804,"metadata":{"connectionId":1,"message":{"seq":3402,"type":"response","request_seq":23,"command":"scopes","success":false,"body":{"error":{"id":9234,"format":"Variables not available in async stacks","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588425843999,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":447},"type":"request","seq":24}},"level":0} {"tag":"dap.send","timestamp":1588425843999,"metadata":{"connectionId":1,"message":{"seq":3403,"type":"response","request_seq":24,"command":"scopes","success":false,"body":{"error":{"id":9234,"format":"Variables not available in async stacks","showUser":false}}}},"level":0} {"tag":"dap.send","timestamp":1588425847804,"metadata":{"connectionId":1,"message":{"seq":3404,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"scopes":{"operation":"scopes","totalTime":0.6,"max":0.4,"avg":0.3,"stddev":0.1,"count":2,"failed":2},"scopes.errors":[{"error":{"message":"Variables not available in async stacks","name":"Error","stack":"Error: Variables not available in async stacks\n\tat d.scopes (extension.js:73:50665)\n\tat k.scopes (extension.js:21:241137)\n\tat extension.js:73:29514\n\tat x._withThread (extension.js:73:33901)\n\tat extension.js:73:29497\n\tat a._onMessage (extension.js:15:2438336)\n\tat extension.js:15:2436853\n\tat t.EventEmitter.fire (extension.js:1:14428)\n\tat Socket._handleData (extension.js:94:10042)\n\tat Socket.emit (events.js:203:13)\n\tat Socket.EventEmitter.emit (domain.js:476:20)\n\tat addChunk (_stream_readable.js:295:12)\n\tat readableAddChunk (_stream_readable.js:276:11)\n\tat Socket.Readable.push (_stream_readable.js:210:10)\n\tat TCP.onStreamRead (internal/stream_base_commons.js:166:17)"}},{"error":{"message":"Variables not available in async stacks","name":"Error","stack":"Error: Variables not available in async stacks\n\tat d.scopes (extension.js:73:50665)\n\tat k.scopes (extension.js:21:241137)\n\tat extension.js:73:29514\n\tat x._withThread (extension.js:73:33901)\n\tat extension.js:73:29497\n\tat a._onMessage (extension.js:15:2438336)\n\tat extension.js:15:2436853\n\tat t.EventEmitter.fire (extension.js:1:14428)\n\tat Socket._handleData (extension.js:94:10042)\n\tat Socket.emit (events.js:203:13)\n\tat Socket.EventEmitter.emit (domain.js:476:20)\n\tat addChunk (_stream_readable.js:295:12)\n\tat readableAddChunk (_stream_readable.js:276:11)\n\tat Socket.Readable.push (_stream_readable.js:210:10)\n\tat TCP.onStreamRead (internal/stream_base_commons.js:166:17)"}}]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425854195,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":20}},"level":0} {"tag":"dap.send","timestamp":1588425854195,"metadata":{"connectionId":0,"message":{"seq":73,"type":"response","request_seq":20,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":4,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425854195,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":25}},"level":0} {"tag":"cdp.send","timestamp":1588425854195,"metadata":{"connectionId":0,"message":{"id":74,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425854196,"metadata":{"connectionId":0,"message":{"id":75,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"777","lineNumber":0,"columnNumber":0}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425854196,"metadata":{"connectionId":0,"message":{"id":76,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425854196,"metadata":{"connectionId":0,"message":{"id":77,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"777","lineNumber":119,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425854197,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":14}},"level":0} {"tag":"cdp.send","timestamp":1588425854197,"metadata":{"connectionId":0,"message":{"id":78,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588425854197,"metadata":{"connectionId":0,"message":{"id":79,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854203,"metadata":{"connectionId":0,"message":{"id":78,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854204,"metadata":{"connectionId":0,"message":{"id":79,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.receive","timestamp":1588425854224,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":26}},"level":0} {"tag":"cdp.send","timestamp":1588425854224,"metadata":{"connectionId":0,"message":{"id":80,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854289,"metadata":{"connectionId":0,"message":{"id":74,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854289,"metadata":{"connectionId":0,"message":{"error":{"code":-32000,"message":"Could not resolve breakpoint"},"id":75,"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854379,"metadata":{"connectionId":0,"message":{"id":76,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425854478,"metadata":{"connectionId":3,"message":{"seq":90,"type":"response","request_seq":14,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":4,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425854499,"metadata":{"connectionId":0,"message":{"id":77,"result":{"breakpointId":"4:119:12:777","actualLocation":{"scriptId":"777","lineNumber":119,"columnNumber":34}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854499,"metadata":{"connectionId":0,"message":{"id":80,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425854503,"metadata":{"connectionId":1,"message":{"seq":3405,"type":"response","request_seq":25,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":4,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178,"column":25}]}}},"level":0} {"tag":"dap.send","timestamp":1588425854503,"metadata":{"connectionId":1,"message":{"seq":3406,"type":"response","request_seq":26,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425854554,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":27}},"level":0} {"tag":"cdp.send","timestamp":1588425854554,"metadata":{"connectionId":0,"message":{"id":81,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425854555,"metadata":{"connectionId":0,"message":{"id":81,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425854556,"metadata":{"connectionId":1,"message":{"seq":3407,"type":"response","request_seq":27,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425855279,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":28}},"level":0} {"tag":"cdp.send","timestamp":1588425855279,"metadata":{"connectionId":0,"message":{"id":82,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425855281,"metadata":{"connectionId":0,"message":{"id":82,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425855283,"metadata":{"connectionId":1,"message":{"seq":3408,"type":"response","request_seq":28,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425855311,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425855313,"metadata":{"connectionId":1,"message":{"seq":3409,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425855317,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":29}},"level":0} {"tag":"cdp.send","timestamp":1588425855318,"metadata":{"connectionId":0,"message":{"id":83,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425855325,"metadata":{"connectionId":0,"message":{"id":83,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425855325,"metadata":{"connectionId":1,"message":{"seq":3410,"type":"response","request_seq":29,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425857278,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":65}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":66}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":67}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":68}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":69}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":70}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":71}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":72}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":73}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":74}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":75}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":76}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":77}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":78}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":79}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":80}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":81}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":82}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425857280,"metadata":{"connectionId":1,"message":{"seq":3411,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425857282,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":30}},"level":0} {"tag":"dap.send","timestamp":1588425857282,"metadata":{"connectionId":1,"message":{"seq":3412,"type":"response","request_seq":30,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425857289,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":31}},"level":0} {"tag":"dap.send","timestamp":1588425857289,"metadata":{"connectionId":1,"message":{"seq":3413,"type":"response","request_seq":31,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":448,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425857331,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":32}},"level":0} {"tag":"cdp.send","timestamp":1588425857332,"metadata":{"connectionId":0,"message":{"id":84,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425857334,"metadata":{"connectionId":0,"message":{"id":84,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425857335,"metadata":{"connectionId":1,"message":{"seq":3414,"type":"response","request_seq":32,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425857694,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":448},"type":"request","seq":33}},"level":0} {"tag":"dap.send","timestamp":1588425857694,"metadata":{"connectionId":1,"message":{"seq":3415,"type":"response","request_seq":33,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":8,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":9,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":10},{"name":"Global","expensive":true,"variablesReference":11}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425857712,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":34}},"level":0} {"tag":"dap.send","timestamp":1588425857712,"metadata":{"connectionId":1,"message":{"seq":3416,"type":"response","request_seq":34,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":449,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":450,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.send","timestamp":1588425859196,"metadata":{"connectionId":0,"message":{"seq":74,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425859480,"metadata":{"connectionId":3,"message":{"seq":91,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":281.1,"max":281.1,"avg":281.1,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425859504,"metadata":{"connectionId":1,"message":{"seq":3417,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":307.9,"max":307.9,"avg":307.9,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":294.3,"max":279.4,"avg":73.6,"stddev":137.2,"count":4,"failed":0},"breakpointLocations.errors":[],"continue":{"operation":"continue","totalTime":4.3,"max":4.3,"avg":4.3,"stddev":null,"count":1,"failed":0},"continue.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.6,"max":0.3,"avg":0.3,"stddev":0,"count":2,"failed":0},"stackTrace.errors":[],"scopes":{"operation":"scopes","totalTime":0.6,"max":0.6,"avg":0.6,"stddev":null,"count":1,"failed":0},"scopes.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425860101,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":21}},"level":0} {"tag":"dap.send","timestamp":1588425860101,"metadata":{"connectionId":0,"message":{"seq":75,"type":"response","request_seq":21,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425860101,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":35}},"level":0} {"tag":"cdp.send","timestamp":1588425860101,"metadata":{"connectionId":0,"message":{"id":85,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425860101,"metadata":{"connectionId":0,"message":{"id":86,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:119:12:777"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425860101,"metadata":{"connectionId":1,"message":{"seq":3418,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":4,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588425860102,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":15}},"level":0} {"tag":"cdp.send","timestamp":1588425860102,"metadata":{"connectionId":0,"message":{"id":87,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425860103,"metadata":{"connectionId":0,"message":{"id":85,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425860103,"metadata":{"connectionId":0,"message":{"id":86,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425860103,"metadata":{"connectionId":0,"message":{"id":87,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425860103,"metadata":{"connectionId":3,"message":{"seq":92,"type":"response","request_seq":15,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425860105,"metadata":{"connectionId":1,"message":{"seq":3419,"type":"response","request_seq":35,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425860290,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":36}},"level":0} {"tag":"cdp.send","timestamp":1588425860290,"metadata":{"connectionId":0,"message":{"id":88,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425860291,"metadata":{"connectionId":0,"message":{"id":88,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425860292,"metadata":{"connectionId":1,"message":{"seq":3420,"type":"response","request_seq":36,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425860300,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425860302,"metadata":{"connectionId":1,"message":{"seq":3421,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588425860311,"metadata":{"connectionId":0,"message":{"seq":76,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425865105,"metadata":{"connectionId":0,"message":{"seq":77,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425865105,"metadata":{"connectionId":3,"message":{"seq":93,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":1.4,"max":1.4,"avg":1.4,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425865105,"metadata":{"connectionId":1,"message":{"seq":3422,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":3.9,"max":3.9,"avg":3.9,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"continue":{"operation":"continue","totalTime":2.6,"max":2.6,"avg":2.6,"stddev":null,"count":1,"failed":0},"continue.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425870441,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":22}},"level":0} {"tag":"dap.send","timestamp":1588425870442,"metadata":{"connectionId":0,"message":{"seq":78,"type":"response","request_seq":22,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":5,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425870442,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":37}},"level":0} {"tag":"cdp.send","timestamp":1588425870442,"metadata":{"connectionId":0,"message":{"id":89,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425870442,"metadata":{"connectionId":0,"message":{"id":90,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"777","lineNumber":119,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425870443,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":16}},"level":0} {"tag":"cdp.send","timestamp":1588425870443,"metadata":{"connectionId":0,"message":{"id":91,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425870448,"metadata":{"connectionId":0,"message":{"id":91,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425870450,"metadata":{"connectionId":3,"message":{"seq":94,"type":"response","request_seq":16,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":5,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425870464,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":38}},"level":0} {"tag":"cdp.send","timestamp":1588425870465,"metadata":{"connectionId":0,"message":{"id":92,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425870533,"metadata":{"connectionId":0,"message":{"id":89,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425870612,"metadata":{"connectionId":0,"message":{"id":90,"result":{"breakpointId":"4:119:12:777","actualLocation":{"scriptId":"777","lineNumber":119,"columnNumber":34}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425870612,"metadata":{"connectionId":0,"message":{"id":92,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425870615,"metadata":{"connectionId":1,"message":{"seq":3423,"type":"response","request_seq":37,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":5,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178,"column":25}]}}},"level":0} {"tag":"dap.send","timestamp":1588425870616,"metadata":{"connectionId":1,"message":{"seq":3424,"type":"response","request_seq":38,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425870650,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":39}},"level":0} {"tag":"cdp.send","timestamp":1588425870650,"metadata":{"connectionId":0,"message":{"id":93,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425870651,"metadata":{"connectionId":0,"message":{"id":93,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425870652,"metadata":{"connectionId":1,"message":{"seq":3425,"type":"response","request_seq":39,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425871602,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":83}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":84}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":85}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":86}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":87}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":88}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":89}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":90}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":91}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":92}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":93}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":94}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":95}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":96}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":97}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":98}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":99}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":100}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425871604,"metadata":{"connectionId":1,"message":{"seq":3426,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425871606,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":40}},"level":0} {"tag":"dap.send","timestamp":1588425871606,"metadata":{"connectionId":1,"message":{"seq":3427,"type":"response","request_seq":40,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425871609,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":41}},"level":0} {"tag":"dap.send","timestamp":1588425871609,"metadata":{"connectionId":1,"message":{"seq":3428,"type":"response","request_seq":41,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":451,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425871650,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":42}},"level":0} {"tag":"cdp.send","timestamp":1588425871651,"metadata":{"connectionId":0,"message":{"id":94,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425871651,"metadata":{"connectionId":0,"message":{"id":94,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425871653,"metadata":{"connectionId":1,"message":{"seq":3429,"type":"response","request_seq":42,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425872014,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":451},"type":"request","seq":43}},"level":0} {"tag":"dap.send","timestamp":1588425872014,"metadata":{"connectionId":1,"message":{"seq":3430,"type":"response","request_seq":43,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":12,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":13,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":14},{"name":"Global","expensive":true,"variablesReference":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425872031,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":44}},"level":0} {"tag":"dap.send","timestamp":1588425872031,"metadata":{"connectionId":1,"message":{"seq":3431,"type":"response","request_seq":44,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":452,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":453,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425874838,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"contextValue","frameId":451,"context":"hover"},"type":"request","seq":45}},"level":0} {"tag":"cdp.send","timestamp":1588425874838,"metadata":{"connectionId":0,"message":{"id":95,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"contextValue","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"timeout":500,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425874840,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1606","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":41,"executionContextId":1,"hash":"12d0c06911f98aa723b5ea2b0bab5ec95ac09838","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":41,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425874840,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1607","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":12,"executionContextId":1,"hash":"3476cd018f03d45b72f3cc1d11ecacae580e6ea9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425874840,"metadata":{"connectionId":0,"message":{"id":95,"result":{"result":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":101}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"512"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425874842,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425874850,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425874852,"metadata":{"connectionId":1,"message":{"seq":3432,"type":"response","request_seq":45,"command":"evaluate","success":true,"body":{"type":"object","result":"Context {_id: 512, _parent: Context, _value: {…}}","variablesReference":16}}},"level":0} {"tag":"dap.receive","timestamp":1588425874879,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":16},"type":"request","seq":46}},"level":0} {"tag":"cdp.send","timestamp":1588425874880,"metadata":{"connectionId":0,"message":{"id":96,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":101}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425874880,"metadata":{"connectionId":0,"message":{"id":97,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":101}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425874881,"metadata":{"connectionId":0,"message":{"id":96,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":102}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":103}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425874881,"metadata":{"connectionId":0,"message":{"id":97,"result":{"result":[{"name":"_id","value":{"type":"number","value":512,"description":"512"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":104}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"1"},{"name":"_parent","type":"object","value":"ConfigAwareContextValuesContainer"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":105}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"512"},{"name":"editorId","type":"string","value":"vs.editor.ICodeEditor:35"},{"name":"editorSimpleInput","type":"boolean","value":"false"},{"name":"editorFocus","type":"boolean","value":"true"},{"name":"textInputFocus","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":106}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425874883,"metadata":{"connectionId":1,"message":{"seq":3433,"type":"response","request_seq":46,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"512","evaluateName":"_id","type":"number","variablesReference":0},{"name":"_parent","value":"Context {_id: 1, _parent: ConfigAwareContextValuesContainer, _value: {…}}","evaluateName":"_parent","type":"object","variablesReference":18},{"name":"_value","value":"{_contextId: 512, editorId: 'vs.editor.ICodeEditor:35', editorSimpleInput: false, editorFocus: true, textInputFocus: true}","evaluateName":"_value","type":"object","variablesReference":19},{"name":"__proto__","value":"Object","evaluateName":"__proto__","type":"object","variablesReference":17}]}}},"level":0} {"tag":"dap.send","timestamp":1588425874967,"metadata":{"connectionId":1,"message":{"seq":3434,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756696","path":"<eval>/VM633756696","sourceReference":633756696}}}},"level":0} {"tag":"dap.send","timestamp":1588425874967,"metadata":{"connectionId":1,"message":{"seq":3435,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756695","path":"<eval>/VM633756695","sourceReference":633756695}}}},"level":0} {"tag":"dap.send","timestamp":1588425875444,"metadata":{"connectionId":0,"message":{"seq":79,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425875451,"metadata":{"connectionId":3,"message":{"seq":95,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":7.2,"max":7.2,"avg":7.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425875619,"metadata":{"connectionId":1,"message":{"seq":3436,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":173.4,"max":173.4,"avg":173.4,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":156.9,"max":151.5,"avg":52.3,"stddev":85.9,"count":3,"failed":0},"breakpointLocations.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.4,"max":0.2,"avg":0.2,"stddev":0,"count":2,"failed":0},"stackTrace.errors":[],"scopes":{"operation":"scopes","totalTime":0.5,"max":0.5,"avg":0.5,"stddev":null,"count":1,"failed":0},"scopes.errors":[],"evaluate":{"operation":"evaluate","totalTime":14.3,"max":14.3,"avg":14.3,"stddev":null,"count":1,"failed":0},"evaluate.errors":[],"variables":{"operation":"variables","totalTime":3.6,"max":3.6,"avg":3.6,"stddev":null,"count":1,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425876607,"metadata":{"connectionId":0,"message":{"seq":80,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425876686,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"contextValue","frameId":451,"context":"hover"},"type":"request","seq":47}},"level":0} {"tag":"cdp.send","timestamp":1588425876687,"metadata":{"connectionId":0,"message":{"id":98,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"contextValue","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"timeout":500,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425876688,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1608","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":12,"executionContextId":1,"hash":"3476cd018f03d45b72f3cc1d11ecacae580e6ea9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425876688,"metadata":{"connectionId":0,"message":{"id":98,"result":{"result":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":107}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"512"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425876689,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425876689,"metadata":{"connectionId":1,"message":{"seq":3437,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756697","path":"<eval>/VM633756697","sourceReference":633756697}}}},"level":0} {"tag":"dap.send","timestamp":1588425876689,"metadata":{"connectionId":1,"message":{"seq":3438,"type":"response","request_seq":47,"command":"evaluate","success":true,"body":{"type":"object","result":"Context {_id: 512, _parent: Context, _value: {…}}","variablesReference":20}}},"level":0} {"tag":"dap.receive","timestamp":1588425876693,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":20},"type":"request","seq":48}},"level":0} {"tag":"cdp.send","timestamp":1588425876693,"metadata":{"connectionId":0,"message":{"id":99,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":107}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425876694,"metadata":{"connectionId":0,"message":{"id":100,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":107}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425876695,"metadata":{"connectionId":0,"message":{"id":99,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":108}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":109}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425876695,"metadata":{"connectionId":0,"message":{"id":100,"result":{"result":[{"name":"_id","value":{"type":"number","value":512,"description":"512"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":110}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"1"},{"name":"_parent","type":"object","value":"ConfigAwareContextValuesContainer"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":111}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"512"},{"name":"editorId","type":"string","value":"vs.editor.ICodeEditor:35"},{"name":"editorSimpleInput","type":"boolean","value":"false"},{"name":"editorFocus","type":"boolean","value":"true"},{"name":"textInputFocus","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":112}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425876698,"metadata":{"connectionId":1,"message":{"seq":3439,"type":"response","request_seq":48,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"512","evaluateName":"_id","type":"number","variablesReference":0},{"name":"_parent","value":"Context {_id: 1, _parent: ConfigAwareContextValuesContainer, _value: {…}}","evaluateName":"_parent","type":"object","variablesReference":22},{"name":"_value","value":"{_contextId: 512, editorId: 'vs.editor.ICodeEditor:35', editorSimpleInput: false, editorFocus: true, textInputFocus: true}","evaluateName":"_value","type":"object","variablesReference":23},{"name":"__proto__","value":"Object","evaluateName":"__proto__","type":"object","variablesReference":21}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425877127,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":23},"type":"request","seq":49}},"level":0} {"tag":"cdp.send","timestamp":1588425877127,"metadata":{"connectionId":0,"message":{"id":101,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":111}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425877127,"metadata":{"connectionId":0,"message":{"id":102,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":111}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425877134,"metadata":{"connectionId":0,"message":{"id":101,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425877134,"metadata":{"connectionId":0,"message":{"id":102,"result":{"result":[{"name":"_contextId","value":{"type":"number","value":512,"description":"512"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorId","value":{"type":"string","value":"vs.editor.ICodeEditor:35"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorSimpleInput","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorFocus","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"textInputFocus","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorTextFocus","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorTabMovesFocus","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorReadonly","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorColumnSelection","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasMultipleSelections","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasSelection","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"canUndo","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"canRedo","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorLangId","value":{"type":"string","value":"markdown"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCompletionItemProvider","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCodeActionsProvider","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCodeLensProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDefinitionProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDeclarationProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasImplementationProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasTypeDefinitionProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasHoverProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentHighlightProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentSymbolProvider","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasReferenceProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasRenameProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasSignatureHelpProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentSelectionFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasMultipleDocumentFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasMultipleDocumentSelectionFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isInEmbeddedEditor","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"accessibilityHelpWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"messageVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onTypeRenameInputVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"foldingEnabled","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"inSnippetMode","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasNextTabstop","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasPrevTabstop","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"supportedCodeAction","value":{"type":"string","value":""},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"parameterHintsVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"parameterHintsMultipleSignatures","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"atEndOfWord","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"acceptSuggestionOnEnter","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"findWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breakpointWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"dirtyDiffVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"callHierarchyVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCallHierarchyProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"markersNavigationVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"referenceSearchVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isWordWrapMinified","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isDominatedByLongLines","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"inDiffEditor","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasWordHighlights","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"renameInputVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestWidgetDetailsVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestWidgetMultipleSuggestions","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestionMakesTextEdit","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestionHasInsertAndReplaceRange","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestionCanResolve","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasOtherSuggestions","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425877137,"metadata":{"connectionId":1,"message":{"seq":3440,"type":"response","request_seq":49,"command":"variables","success":true,"body":{"variables":[{"name":"_contextId","value":"512","evaluateName":"_value._contextId","type":"number","variablesReference":0},{"name":"acceptSuggestionOnEnter","value":"true","evaluateName":"_value.acceptSuggestionOnEnter","type":"boolean","variablesReference":0},{"name":"accessibilityHelpWidgetVisible","value":"false","evaluateName":"_value.accessibilityHelpWidgetVisible","type":"boolean","variablesReference":0},{"name":"atEndOfWord","value":"false","evaluateName":"_value.atEndOfWord","type":"boolean","variablesReference":0},{"name":"breakpointWidgetVisible","value":"false","evaluateName":"_value.breakpointWidgetVisible","type":"boolean","variablesReference":0},{"name":"callHierarchyVisible","value":"false","evaluateName":"_value.callHierarchyVisible","type":"boolean","variablesReference":0},{"name":"canRedo","value":"false","evaluateName":"_value.canRedo","type":"boolean","variablesReference":0},{"name":"canUndo","value":"false","evaluateName":"_value.canUndo","type":"boolean","variablesReference":0},{"name":"dirtyDiffVisible","value":"false","evaluateName":"_value.dirtyDiffVisible","type":"boolean","variablesReference":0},{"name":"editorColumnSelection","value":"false","evaluateName":"_value.editorColumnSelection","type":"boolean","variablesReference":0},{"name":"editorFocus","value":"true","evaluateName":"_value.editorFocus","type":"boolean","variablesReference":0},{"name":"editorHasCallHierarchyProvider","value":"false","evaluateName":"_value.editorHasCallHierarchyProvider","type":"boolean","variablesReference":0},{"name":"editorHasCodeActionsProvider","value":"true","evaluateName":"_value.editorHasCodeActionsProvider","type":"boolean","variablesReference":0},{"name":"editorHasCodeLensProvider","value":"false","evaluateName":"_value.editorHasCodeLensProvider","type":"boolean","variablesReference":0},{"name":"editorHasCompletionItemProvider","value":"true","evaluateName":"_value.editorHasCompletionItemProvider","type":"boolean","variablesReference":0},{"name":"editorHasDeclarationProvider","value":"false","evaluateName":"_value.editorHasDeclarationProvider","type":"boolean","variablesReference":0},{"name":"editorHasDefinitionProvider","value":"false","evaluateName":"_value.editorHasDefinitionProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentFormattingProvider","value":"false","evaluateName":"_value.editorHasDocumentFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentHighlightProvider","value":"false","evaluateName":"_value.editorHasDocumentHighlightProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentSelectionFormattingProvider","value":"false","evaluateName":"_value.editorHasDocumentSelectionFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentSymbolProvider","value":"true","evaluateName":"_value.editorHasDocumentSymbolProvider","type":"boolean","variablesReference":0},{"name":"editorHasHoverProvider","value":"false","evaluateName":"_value.editorHasHoverProvider","type":"boolean","variablesReference":0},{"name":"editorHasImplementationProvider","value":"false","evaluateName":"_value.editorHasImplementationProvider","type":"boolean","variablesReference":0},{"name":"editorHasMultipleDocumentFormattingProvider","value":"false","evaluateName":"_value.editorHasMultipleDocumentFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasMultipleDocumentSelectionFormattingProvider","value":"false","evaluateName":"_value.editorHasMultipleDocumentSelectionFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasMultipleSelections","value":"false","evaluateName":"_value.editorHasMultipleSelections","type":"boolean","variablesReference":0},{"name":"editorHasReferenceProvider","value":"false","evaluateName":"_value.editorHasReferenceProvider","type":"boolean","variablesReference":0},{"name":"editorHasRenameProvider","value":"false","evaluateName":"_value.editorHasRenameProvider","type":"boolean","variablesReference":0},{"name":"editorHasSelection","value":"false","evaluateName":"_value.editorHasSelection","type":"boolean","variablesReference":0},{"name":"editorHasSignatureHelpProvider","value":"false","evaluateName":"_value.editorHasSignatureHelpProvider","type":"boolean","variablesReference":0},{"name":"editorHasTypeDefinitionProvider","value":"false","evaluateName":"_value.editorHasTypeDefinitionProvider","type":"boolean","variablesReference":0},{"name":"editorId","value":"'vs.editor.ICodeEditor:35'","evaluateName":"_value.editorId","type":"string","variablesReference":0},{"name":"editorLangId","value":"'markdown'","evaluateName":"_value.editorLangId","type":"string","variablesReference":0},{"name":"editorReadonly","value":"false","evaluateName":"_value.editorReadonly","type":"boolean","variablesReference":0},{"name":"editorSimpleInput","value":"false","evaluateName":"_value.editorSimpleInput","type":"boolean","variablesReference":0},{"name":"editorTabMovesFocus","value":"false","evaluateName":"_value.editorTabMovesFocus","type":"boolean","variablesReference":0},{"name":"editorTextFocus","value":"true","evaluateName":"_value.editorTextFocus","type":"boolean","variablesReference":0},{"name":"findWidgetVisible","value":"false","evaluateName":"_value.findWidgetVisible","type":"boolean","variablesReference":0},{"name":"foldingEnabled","value":"true","evaluateName":"_value.foldingEnabled","type":"boolean","variablesReference":0},{"name":"hasNextTabstop","value":"false","evaluateName":"_value.hasNextTabstop","type":"boolean","variablesReference":0},{"name":"hasOtherSuggestions","value":"false","evaluateName":"_value.hasOtherSuggestions","type":"boolean","variablesReference":0},{"name":"hasPrevTabstop","value":"false","evaluateName":"_value.hasPrevTabstop","type":"boolean","variablesReference":0},{"name":"hasWordHighlights","value":"false","evaluateName":"_value.hasWordHighlights","type":"boolean","variablesReference":0},{"name":"inDiffEditor","value":"false","evaluateName":"_value.inDiffEditor","type":"boolean","variablesReference":0},{"name":"inSnippetMode","value":"false","evaluateName":"_value.inSnippetMode","type":"boolean","variablesReference":0},{"name":"isDominatedByLongLines","value":"false","evaluateName":"_value.isDominatedByLongLines","type":"boolean","variablesReference":0},{"name":"isInEmbeddedEditor","value":"false","evaluateName":"_value.isInEmbeddedEditor","type":"boolean","variablesReference":0},{"name":"isWordWrapMinified","value":"false","evaluateName":"_value.isWordWrapMinified","type":"boolean","variablesReference":0},{"name":"markersNavigationVisible","value":"false","evaluateName":"_value.markersNavigationVisible","type":"boolean","variablesReference":0},{"name":"messageVisible","value":"false","evaluateName":"_value.messageVisible","type":"boolean","variablesReference":0},{"name":"onTypeRenameInputVisible","value":"false","evaluateName":"_value.onTypeRenameInputVisible","type":"boolean","variablesReference":0},{"name":"parameterHintsMultipleSignatures","value":"false","evaluateName":"_value.parameterHintsMultipleSignatures","type":"boolean","variablesReference":0},{"name":"parameterHintsVisible","value":"false","evaluateName":"_value.parameterHintsVisible","type":"boolean","variablesReference":0},{"name":"referenceSearchVisible","value":"false","evaluateName":"_value.referenceSearchVisible","type":"boolean","variablesReference":0},{"name":"renameInputVisible","value":"false","evaluateName":"_value.renameInputVisible","type":"boolean","variablesReference":0},{"name":"suggestionCanResolve","value":"false","evaluateName":"_value.suggestionCanResolve","type":"boolean","variablesReference":0},{"name":"suggestionHasInsertAndReplaceRange","value":"false","evaluateName":"_value.suggestionHasInsertAndReplaceRange","type":"boolean","variablesReference":0},{"name":"suggestionMakesTextEdit","value":"true","evaluateName":"_value.suggestionMakesTextEdit","type":"boolean","variablesReference":0},{"name":"suggestWidgetDetailsVisible","value":"false","evaluateName":"_value.suggestWidgetDetailsVisible","type":"boolean","variablesReference":0},{"name":"suggestWidgetMultipleSuggestions","value":"false","evaluateName":"_value.suggestWidgetMultipleSuggestions","type":"boolean","variablesReference":0},{"name":"suggestWidgetVisible","value":"false","evaluateName":"_value.suggestWidgetVisible","type":"boolean","variablesReference":0},{"name":"supportedCodeAction","value":"''","evaluateName":"_value.supportedCodeAction","type":"string","variablesReference":0},{"name":"textInputFocus","value":"true","evaluateName":"_value.textInputFocus","type":"boolean","variablesReference":0}]}}},"level":0} {"tag":"dap.send","timestamp":1588425881691,"metadata":{"connectionId":0,"message":{"seq":81,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425881692,"metadata":{"connectionId":1,"message":{"seq":3441,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"evaluate":{"operation":"evaluate","totalTime":3.1,"max":3.1,"avg":3.1,"stddev":null,"count":1,"failed":0},"evaluate.errors":[],"variables":{"operation":"variables","totalTime":16.6,"max":11.4,"avg":8.3,"stddev":4.3,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425894559,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":22},"type":"request","seq":50}},"level":0} {"tag":"cdp.send","timestamp":1588425894559,"metadata":{"connectionId":0,"message":{"id":103,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":110}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425894559,"metadata":{"connectionId":0,"message":{"id":104,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":110}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425894560,"metadata":{"connectionId":0,"message":{"id":103,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":113}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":114}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425894561,"metadata":{"connectionId":0,"message":{"id":104,"result":{"result":[{"name":"_id","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"ConfigAwareContextValuesContainer","description":"ConfigAwareContextValuesContainer","objectId":"{\"injectedScriptId\":1,\"id\":115}","preview":{"type":"object","description":"ConfigAwareContextValuesContainer","overflow":true,"properties":[{"name":"_id","type":"number","value":"0"},{"name":"_parent","type":"object","value":"null","subtype":"null"},{"name":"_value","type":"object","value":"Object"},{"name":"_configurationService","type":"object","value":"WorkspaceService"},{"name":"_values","type":"object","value":"Map(19)","subtype":"map"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":116}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"1"},{"name":"groupActiveEditorDirty","type":"boolean","value":"true"},{"name":"groupEditorsCount","type":"number","value":"1"},{"name":"editorPinned","type":"boolean","value":"true"},{"name":"breadcrumbsPossible","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":117}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425894580,"metadata":{"connectionId":1,"message":{"seq":3442,"type":"response","request_seq":50,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"1","evaluateName":"_parent._id","type":"number","variablesReference":0},{"name":"_parent","value":"ConfigAwareContextValuesContainer {_id: 0, _parent: null, _value: {…}, _configurationService: WorkspaceService, _values: Map(19)}","evaluateName":"_parent._parent","type":"object","variablesReference":25},{"name":"_value","value":"{_contextId: 1, groupActiveEditorDirty: true, groupEditorsCount: 1, editorPinned: true, breadcrumbsPossible: true}","evaluateName":"_parent._value","type":"object","variablesReference":26},{"name":"__proto__","value":"Object","evaluateName":"_parent.__proto__","type":"object","variablesReference":24}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425897505,"metadata":{"connectionId":1,"message":{"command":"completions","arguments":{"frameId":451,"text":"J","column":2,"line":1},"type":"request","seq":51}},"level":0} {"tag":"cdp.send","timestamp":1588425897516,"metadata":{"connectionId":0,"message":{"id":105,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"(self)","objectGroup":"console","silent":true,"throwOnSideEffect":false,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897518,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1609","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":1,"hash":"338fef78819848be36328c15cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897518,"metadata":{"connectionId":0,"message":{"id":105,"result":{"result":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":118}"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425897520,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"cdp.send","timestamp":1588425897523,"metadata":{"connectionId":0,"message":{"id":106,"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"function(e,t,r){const n=r?\"variable\":\"property\",i=(e,t,i)=>{if(\"function\"!==t)return n;if(\"constructor\"===e)return\"class\";const a=String(i);return a.startsWith(\"class \")||a.includes(\"[native code]\")&&/^[A-Z]/.test(e)?\"class\":r?\"function\":\"method\"},a=[],o=new Set;let s=\"~\",c=void 0===e?this:e;for(;null!=c;c=c.__proto__){s+=\"~\";const e=Object.getOwnPropertyNames(c).filter(e=>e.startsWith(t)&&!e.match(/^\\d+$/));for(const t of e){if(o.has(t))continue;o.add(t);const e=Object.getOwnPropertyDescriptor(c,t);let r=n;try{r=i(t,typeof(null==e?void 0:e.value),c[t])}catch(e){}a.push({label:t,sortText:s+t.replace(/^_+/,e=>\"{\".repeat(e.length)),type:r})}r=!1}return{result:a,isArray:this instanceof Array}}","arguments":[{},{"value":"J"},{"value":true}],"objectId":"{\"injectedScriptId\":1,\"id\":118}","returnByValue":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425897523,"metadata":{"connectionId":1,"message":{"seq":3443,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756698","path":"<eval>/VM633756698","sourceReference":633756698}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425897526,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1612","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":701,"executionContextId":1,"hash":"045dbea2708b71047124f11f2c93e91c2ae896dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":701,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897526,"metadata":{"connectionId":0,"message":{"id":106,"result":{"result":{"type":"object","value":{"result":[{"label":"JSON","sortText":"~~JSON","type":"variable"}],"isArray":false}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425897527,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425897528,"metadata":{"connectionId":1,"message":{"seq":3444,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756699","path":"<eval>/VM633756699","sourceReference":633756699}}}},"level":0} {"tag":"cdp.send","timestamp":1588425897528,"metadata":{"connectionId":0,"message":{"id":107,"method":"Runtime.releaseObject","params":{"objectId":"{\"injectedScriptId\":1,\"id\":118}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":108,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":83}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":109,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":83}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":110,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":84}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":111,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":84}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":112,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":85}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":113,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":85}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":114,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":86}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425897529,"metadata":{"connectionId":0,"message":{"id":115,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":86}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897533,"metadata":{"connectionId":0,"message":{"id":107,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897533,"metadata":{"connectionId":0,"message":{"id":108,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897535,"metadata":{"connectionId":0,"message":{"id":109,"result":{"result":[{"name":"keybinding","value":{"type":"object","className":"NativeResolvedKeybinding","description":"NativeResolvedKeybinding","objectId":"{\"injectedScriptId\":1,\"id\":119}","preview":{"type":"object","description":"NativeResolvedKeybinding","overflow":false,"properties":[{"name":"_os","type":"number","value":"2"},{"name":"_parts","type":"object","value":"Array(1)","subtype":"array"},{"name":"_mapper","type":"object","value":"MacLinuxKeyboardMapper"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"target","value":{"type":"object","subtype":"node","className":"HTMLTextAreaElement","description":"textarea.inputarea","objectId":"{\"injectedScriptId\":1,\"id\":120}","preview":{"type":"object","subtype":"node","description":"textarea.inputarea","overflow":true,"properties":[{"name":"autocomplete","type":"string","value":"off"},{"name":"autofocus","type":"boolean","value":"false"},{"name":"cols","type":"number","value":"20"},{"name":"dirName","type":"string","value":""},{"name":"disabled","type":"boolean","value":"false"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"shouldPreventDefault","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"firstPart","value":{"type":"string","value":"[ArrowDown]"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"contextValue","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":121}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"512"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"currentChord","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"keypressLabel","value":{"type":"string","value":"↓"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resolveResult","value":{"type":"undefined"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897535,"metadata":{"connectionId":0,"message":{"id":110,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897535,"metadata":{"connectionId":0,"message":{"id":111,"result":{"result":[{"name":"event_1","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":122}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"Event","type":"object","value":"Object"},{"name":"setGlobalLeakWarningThreshold","type":"function","value":""},{"name":"Emitter","type":"function","value":""},{"name":"PauseableEmitter","type":"function","value":""},{"name":"AsyncEmitter","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"async_1","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":123}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"isThenable","type":"function","value":""},{"name":"createCancelablePromise","type":"function","value":""},{"name":"raceCancellation","type":"function","value":""},{"name":"raceTimeout","type":"function","value":""},{"name":"asPromise","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"arrays","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":124}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"tail","type":"function","value":""},{"name":"tail2","type":"function","value":""},{"name":"equals","type":"function","value":""},{"name":"binarySearch","type":"function","value":""},{"name":"findFirstInSorted","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"nls","value":{"type":"object","className":"NLSPlugin","description":"NLSPlugin","objectId":"{\"injectedScriptId\":1,\"id\":125}","preview":{"type":"object","description":"NLSPlugin","overflow":false,"properties":[{"name":"_env","type":"object","value":"Environment"},{"name":"localize","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897536,"metadata":{"connectionId":0,"message":{"id":112,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897536,"metadata":{"connectionId":0,"message":{"id":113,"result":{"result":[{"name":"perf","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":126}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"mark","type":"function","value":""},{"name":"getEntries","type":"function","value":""},{"name":"getEntry","type":"function","value":""},{"name":"getDuration","type":"function","value":""},{"name":"importEntries","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"bootstrapWindow","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":127}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"assign","type":"function","value":""},{"name":"load","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897747,"metadata":{"connectionId":0,"message":{"id":114,"result":{"result":[{"name":"document","value":{"type":"object","subtype":"node","className":"HTMLDocument","description":"#document","objectId":"{\"injectedScriptId\":1,\"id\":128}","preview":{"type":"object","subtype":"node","description":"#document","overflow":true,"properties":[{"name":"location","type":"object","value":"Location"},{"name":"implementation","type":"object","value":"DOMImplementation"},{"name":"URL","type":"string","value":"file:///Users/roblou/code/vscode/out/vs/code/elect…0Support%2Fcode-oss-dev%2Frapid_render.json%22%7D"},{"name":"documentURI","type":"string","value":"file:///Users/roblou/code/vscode/out/vs/code/elect…0Support%2Fcode-oss-dev%2Frapid_render.json%22%7D"},{"name":"compatMode","type":"string","value":"CSS1Compat"}]}},"writable":false,"configurable":false,"enumerable":true,"isOwn":true},{"name":"name","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"customElements","value":{"type":"object","className":"CustomElementRegistry","description":"CustomElementRegistry","objectId":"{\"injectedScriptId\":1,\"id\":129}","preview":{"type":"object","description":"CustomElementRegistry","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"history","value":{"type":"object","className":"History","description":"History","objectId":"{\"injectedScriptId\":1,\"id\":130}","preview":{"type":"object","description":"History","overflow":true,"properties":[{"name":"back","type":"function","value":""},{"name":"forward","type":"function","value":""},{"name":"go","type":"function","value":""},{"name":"length","type":"accessor"},{"name":"scrollRestoration","type":"string","value":"auto"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"locationbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":131}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"menubar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":132}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"personalbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":133}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollbars","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":134}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"statusbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":135}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"toolbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":136}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"status","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"frameElement","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"navigator","value":{"type":"object","className":"Navigator","description":"Navigator","objectId":"{\"injectedScriptId\":1,\"id\":137}","preview":{"type":"object","description":"Navigator","overflow":true,"properties":[{"name":"vendorSub","type":"string","value":""},{"name":"productSub","type":"string","value":"20030107"},{"name":"vendor","type":"string","value":"Google Inc."},{"name":"maxTouchPoints","type":"number","value":"0"},{"name":"hardwareConcurrency","type":"number","value":"8"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"origin","value":{"type":"string","value":"file://"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"external","value":{"type":"object","className":"External","description":"External","objectId":"{\"injectedScriptId\":1,\"id\":138}","preview":{"type":"object","description":"External","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screen","value":{"type":"object","className":"Screen","description":"Screen","objectId":"{\"injectedScriptId\":1,\"id\":139}","preview":{"type":"object","description":"Screen","overflow":true,"properties":[{"name":"availWidth","type":"number","value":"1680"},{"name":"availHeight","type":"number","value":"1002"},{"name":"width","type":"number","value":"1680"},{"name":"height","type":"number","value":"1050"},{"name":"colorDepth","type":"number","value":"24"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"innerWidth","value":{"type":"number","value":982,"description":"982"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"innerHeight","value":{"type":"number","value":980,"description":"980"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollX","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"pageXOffset","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollY","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"pageYOffset","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"visualViewport","value":{"type":"object","className":"VisualViewport","description":"VisualViewport","objectId":"{\"injectedScriptId\":1,\"id\":140}","preview":{"type":"object","description":"VisualViewport","overflow":true,"properties":[{"name":"offsetLeft","type":"number","value":"0"},{"name":"offsetTop","type":"number","value":"0"},{"name":"pageLeft","type":"number","value":"0"},{"name":"pageTop","type":"number","value":"0"},{"name":"width","type":"number","value":"982"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenX","value":{"type":"number","value":562,"description":"562"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenY","value":{"type":"number","value":23,"description":"23"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"outerWidth","value":{"type":"number","value":982,"description":"982"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"outerHeight","value":{"type":"number","value":1002,"description":"1002"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"devicePixelRatio","value":{"type":"number","value":2,"description":"2"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"clientInformation","value":{"type":"object","className":"Navigator","description":"Navigator","objectId":"{\"injectedScriptId\":1,\"id\":141}","preview":{"type":"object","description":"Navigator","overflow":true,"properties":[{"name":"vendorSub","type":"string","value":""},{"name":"productSub","type":"string","value":"20030107"},{"name":"vendor","type":"string","value":"Google Inc."},{"name":"maxTouchPoints","type":"number","value":"0"},{"name":"hardwareConcurrency","type":"number","value":"8"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenLeft","value":{"type":"number","value":562,"description":"562"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenTop","value":{"type":"number","value":23,"description":"23"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"defaultStatus","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"defaultstatus","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"styleMedia","value":{"type":"object","className":"StyleMedia","description":"StyleMedia","objectId":"{\"injectedScriptId\":1,\"id\":142}","preview":{"type":"object","description":"StyleMedia","overflow":false,"properties":[{"name":"type","type":"string","value":"screen"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onanimationend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onanimationiteration","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onanimationstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onsearch","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ontransitionend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkitanimationend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkitanimationiteration","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkitanimationstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkittransitionend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isSecureContext","value":{"type":"boolean","value":true},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onabort","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onblur","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncancel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncanplay","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncanplaythrough","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onclick","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onclose","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncontextmenu","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncuechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondblclick","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondrag","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragenter","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragleave","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragover","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondrop","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondurationchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onemptied","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onended","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onerror","value":{"type":"function","className":"Function","description":"function (message, filename, line, column, e) {\n that._onUncaughtError(message, filename, line, column, e);\n if (oldOnError) {\n oldOnError.apply(this, arguments);\n }\n }","objectId":"{\"injectedScriptId\":1,\"id\":143}"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onfocus","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oninput","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oninvalid","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onkeydown","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onkeypress","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onkeyup","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onload","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onloadeddata","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onloadedmetadata","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onloadstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmousedown","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseenter","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseleave","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmousemove","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseout","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseover","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseup","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmousewheel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpause","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onplay","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onplaying","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onprogress","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onratechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onreset","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onresize","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onscroll","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onseeked","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onseeking","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onselect","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onstalled","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onsubmit","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onsuspend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ontimeupdate","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ontoggle","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onvolumechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwaiting","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwheel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onauxclick","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ongotpointercapture","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onlostpointercapture","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerdown","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointermove","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerup","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointercancel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerover","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerout","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerenter","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerleave","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onselectstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onselectionchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onafterprint","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onbeforeprint","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onbeforeunload","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onhashchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onlanguagechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmessage","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmessageerror","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onoffline","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ononline","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpagehide","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpageshow","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpopstate","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onrejectionhandled","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onstorage","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onunhandledrejection","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onunload","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"performance","value":{"type":"object","className":"Performance","description":"Performance","objectId":"{\"injectedScriptId\":1,\"id\":144}","preview":{"type":"object","description":"Performance","overflow":false,"properties":[{"name":"timeOrigin","type":"number","value":"1588425099893.2908"},{"name":"onresourcetimingbufferfull","type":"object","value":"null","subtype":"null"},{"name":"memory","type":"object","value":"MemoryInfo"},{"name":"navigation","type":"object","value":"PerformanceNavigation"},{"name":"timing","type":"object","value":"PerformanceTiming"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onappinstalled","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onbeforeinstallprompt","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"crypto","value":{"type":"object","className":"Crypto","description":"Crypto","objectId":"{\"injectedScriptId\":1,\"id\":145}","preview":{"type":"object","description":"Crypto","overflow":false,"properties":[{"name":"subtle","type":"object","value":"SubtleCrypto"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"indexedDB","value":{"type":"object","className":"IDBFactory","description":"IDBFactory","objectId":"{\"injectedScriptId\":1,\"id\":146}","preview":{"type":"object","description":"IDBFactory","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"webkitStorageInfo","value":{"type":"object","className":"DeprecatedStorageInfo","description":"DeprecatedStorageInfo","objectId":"{\"injectedScriptId\":1,\"id\":147}","preview":{"type":"object","description":"DeprecatedStorageInfo","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"sessionStorage","value":{"type":"object","className":"Storage","description":"Storage","objectId":"{\"injectedScriptId\":1,\"id\":148}","preview":{"type":"object","description":"Storage","overflow":false,"properties":[{"name":"length","type":"number","value":"0"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"localStorage","value":{"type":"object","className":"Storage","description":"Storage","objectId":"{\"injectedScriptId\":1,\"id\":149}","preview":{"type":"object","description":"Storage","overflow":true,"properties":[{"name":"storage://workspace/Users/roblou/code/timey/debug.functionbreakpoint","type":"string","value":"[]"},{"name":"storage://workspace/Users/roblou/code/timey/memento/workbench.parts.editor","type":"string","value":"{\"editorpart.uiState\":{\"widthRatio\":[1]}}"},{"name":"storage://workspace/Users/roblou/code/php-language-server/memento/workbench.view.explorer","type":"string","value":"{\"explorer.memento.expandedFolderResources\":[\"file…hp-language-server/fixtures/completion/html.php\"}"},{"name":"storage://workspace/root:ba09fb0be71b87774e23351a922e914d/debug.viewsweights","type":"string","value":"[445,111.25,333.75,22]"},{"name":"storage://workspace/Users/roblou/code/vscode/memento/workbench.view.explorer","type":"string","value":"{\"openEditors.memento.collapsed\":false,\"explorer.m…de/src/vs/workbench/parts/search/browser/media\"]}"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onformdata","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerrawupdate","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"speechSynthesis","value":{"type":"object","className":"SpeechSynthesis","description":"SpeechSynthesis","objectId":"{\"injectedScriptId\":1,\"id\":150}","preview":{"type":"object","description":"SpeechSynthesis","overflow":false,"properties":[{"name":"pending","type":"boolean","value":"false"},{"name":"speaking","type":"boolean","value":"false"},{"name":"paused","type":"boolean","value":"false"},{"name":"onvoiceschanged","type":"object","value":"null","subtype":"null"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"applicationCache","value":{"type":"object","className":"ApplicationCache","description":"ApplicationCache","objectId":"{\"injectedScriptId\":1,\"id\":151}","preview":{"type":"object","description":"ApplicationCache","overflow":true,"properties":[{"name":"status","type":"number","value":"0"},{"name":"oncached","type":"object","value":"null","subtype":"null"},{"name":"onchecking","type":"object","value":"null","subtype":"null"},{"name":"ondownloading","type":"object","value":"null","subtype":"null"},{"name":"onerror","type":"object","value":"null","subtype":"null"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"caches","value":{"type":"object","className":"CacheStorage","description":"CacheStorage","objectId":"{\"injectedScriptId\":1,\"id\":152}","preview":{"type":"object","description":"CacheStorage","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondevicemotion","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondeviceorientation","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondeviceorientationabsolute","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"event","value":{"type":"object","className":"KeyboardEvent","description":"KeyboardEvent","objectId":"{\"injectedScriptId\":1,\"id\":153}","preview":{"type":"object","description":"KeyboardEvent","overflow":true,"properties":[{"name":"isTrusted","type":"boolean","value":"true"},{"name":"key","type":"string","value":"ArrowDown"},{"name":"code","type":"string","value":"ArrowDown"},{"name":"location","type":"number","value":"0"},{"name":"ctrlKey","type":"boolean","value":"false"}]}},"writable":false,"configurable":true,"enumerable":false,"isOwn":true},{"name":"offscreenBuffering","value":{"type":"boolean","value":true},"writable":false,"configurable":true,"enumerable":false,"isOwn":true},{"name":"process","get":{"type":"function","className":"Function","description":"get() {\n return _process;\n }","objectId":"{\"injectedScriptId\":1,\"id\":154}"},"set":{"type":"function","className":"Function","description":"set(value) {\n _process = value;\n }","objectId":"{\"injectedScriptId\":1,\"id\":155}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"GLOBAL","get":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":156}"},"set":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":157}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"root","get":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":158}"},"set":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":159}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"Buffer","get":{"type":"function","className":"Function","description":"get() {\n return _Buffer;\n }","objectId":"{\"injectedScriptId\":1,\"id\":160}"},"set":{"type":"function","className":"Function","description":"set(value) {\n _Buffer = value;\n }","objectId":"{\"injectedScriptId\":1,\"id\":161}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"Symbol(graceful-fs.queue)","get":{"type":"function","className":"Function","description":"function() {\n return queue\n }","objectId":"{\"injectedScriptId\":1,\"id\":162}"},"set":{"type":"undefined"},"configurable":false,"enumerable":false,"isOwn":true,"symbol":{"type":"symbol","description":"Symbol(graceful-fs.queue)","objectId":"{\"injectedScriptId\":1,\"id\":163}"}},{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":164}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":165}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425897774,"metadata":{"connectionId":0,"message":{"id":115,"result":{"result":[{"name":"postMessage","value":{"type":"function","className":"Function","description":"function () { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":166}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"blur","value":{"type":"function","className":"Function","description":"function () { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":167}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"focus","value":{"type":"function","className":"Function","description":"function () { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":168}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"close","value":{"type":"function","className":"Function","description":"function () {\n ipc_renderer_internal_1.ipcRendererInternal.sendSync('ELECTRON_BROWSER_WINDOW_CLOSE');\n }","objectId":"{\"injectedScriptId\":1,\"id\":169}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"parent","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":170}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"opener","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"top","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":171}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":false,"configurable":false,"enumerable":true,"isOwn":true},{"name":"length","value":{"type":"number","value":0,"description":"0"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"frames","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":172}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"closed","value":{"type":"boolean","value":false},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"location","value":{"type":"object","className":"Location","description":"Location","objectId":"{\"injectedScriptId\":1,\"id\":173}","preview":{"type":"object","description":"Location","overflow":true,"properties":[{"name":"replace","type":"function","value":""},{"name":"href","type":"string","value":"file:///Users/roblou/code/vscode/out/vs/code/elect…0Support%2Fcode-oss-dev%2Frapid_render.json%22%7D"},{"name":"ancestorOrigins","type":"object","value":"DOMStringList"},{"name":"origin","type":"string","value":"file://"},{"name":"protocol","type":"string","value":"file:"}]}},"writable":true,"configurable":false,"enumerable":true,"isOwn":true},{"name":"self","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":174}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"window","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":175}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":false,"configurable":false,"enumerable":true,"isOwn":true},{"name":"document","value":{"type":"object","subtype":"node","className":"HTMLDocument","description":"#document","objectId":"{\"injectedScriptId\":1,\"id\":176}","preview":{"type":"object","subtype":"node","description":"#document","overflow":true,"properties":[{"name":"location","type":"object","value":"Location"},{"name":"implementation","type":"object","value":"DOMImplementation"},{"name":"URL","type":"string","value":"file:///Users/roblou/code/vscode/out/vs/code/elect…0Support%2Fcode-oss-dev%2Frapid_render.json%22%7D"},{"name":"documentURI","type":"string","value":"file:///Users/roblou/code/vscode/out/vs/code/elect…0Support%2Fcode-oss-dev%2Frapid_render.json%22%7D"},{"name":"compatMode","type":"string","value":"CSS1Compat"}]}},"writable":false,"configurable":false,"enumerable":true,"isOwn":true},{"name":"name","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"customElements","value":{"type":"object","className":"CustomElementRegistry","description":"CustomElementRegistry","objectId":"{\"injectedScriptId\":1,\"id\":177}","preview":{"type":"object","description":"CustomElementRegistry","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"history","value":{"type":"object","className":"History","description":"History","objectId":"{\"injectedScriptId\":1,\"id\":178}","preview":{"type":"object","description":"History","overflow":true,"properties":[{"name":"back","type":"function","value":""},{"name":"forward","type":"function","value":""},{"name":"go","type":"function","value":""},{"name":"length","type":"accessor"},{"name":"scrollRestoration","type":"string","value":"auto"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"locationbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":179}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"menubar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":180}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"personalbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":181}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollbars","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":182}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"statusbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":183}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"toolbar","value":{"type":"object","className":"BarProp","description":"BarProp","objectId":"{\"injectedScriptId\":1,\"id\":184}","preview":{"type":"object","description":"BarProp","overflow":false,"properties":[{"name":"visible","type":"boolean","value":"true"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"status","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"frameElement","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"navigator","value":{"type":"object","className":"Navigator","description":"Navigator","objectId":"{\"injectedScriptId\":1,\"id\":185}","preview":{"type":"object","description":"Navigator","overflow":true,"properties":[{"name":"vendorSub","type":"string","value":""},{"name":"productSub","type":"string","value":"20030107"},{"name":"vendor","type":"string","value":"Google Inc."},{"name":"maxTouchPoints","type":"number","value":"0"},{"name":"hardwareConcurrency","type":"number","value":"8"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"origin","value":{"type":"string","value":"file://"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"external","value":{"type":"object","className":"External","description":"External","objectId":"{\"injectedScriptId\":1,\"id\":186}","preview":{"type":"object","description":"External","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screen","value":{"type":"object","className":"Screen","description":"Screen","objectId":"{\"injectedScriptId\":1,\"id\":187}","preview":{"type":"object","description":"Screen","overflow":true,"properties":[{"name":"availWidth","type":"number","value":"1680"},{"name":"availHeight","type":"number","value":"1002"},{"name":"width","type":"number","value":"1680"},{"name":"height","type":"number","value":"1050"},{"name":"colorDepth","type":"number","value":"24"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"innerWidth","value":{"type":"number","value":982,"description":"982"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"innerHeight","value":{"type":"number","value":980,"description":"980"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollX","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"pageXOffset","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollY","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"pageYOffset","value":{"type":"number","value":0,"description":"0"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"visualViewport","value":{"type":"object","className":"VisualViewport","description":"VisualViewport","objectId":"{\"injectedScriptId\":1,\"id\":188}","preview":{"type":"object","description":"VisualViewport","overflow":true,"properties":[{"name":"offsetLeft","type":"number","value":"0"},{"name":"offsetTop","type":"number","value":"0"},{"name":"pageLeft","type":"number","value":"0"},{"name":"pageTop","type":"number","value":"0"},{"name":"width","type":"number","value":"982"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenX","value":{"type":"number","value":562,"description":"562"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenY","value":{"type":"number","value":23,"description":"23"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"outerWidth","value":{"type":"number","value":982,"description":"982"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"outerHeight","value":{"type":"number","value":1002,"description":"1002"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"devicePixelRatio","value":{"type":"number","value":2,"description":"2"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"clientInformation","value":{"type":"object","className":"Navigator","description":"Navigator","objectId":"{\"injectedScriptId\":1,\"id\":189}","preview":{"type":"object","description":"Navigator","overflow":true,"properties":[{"name":"vendorSub","type":"string","value":""},{"name":"productSub","type":"string","value":"20030107"},{"name":"vendor","type":"string","value":"Google Inc."},{"name":"maxTouchPoints","type":"number","value":"0"},{"name":"hardwareConcurrency","type":"number","value":"8"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenLeft","value":{"type":"number","value":562,"description":"562"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"screenTop","value":{"type":"number","value":23,"description":"23"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"defaultStatus","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"defaultstatus","value":{"type":"string","value":""},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"styleMedia","value":{"type":"object","className":"StyleMedia","description":"StyleMedia","objectId":"{\"injectedScriptId\":1,\"id\":190}","preview":{"type":"object","description":"StyleMedia","overflow":false,"properties":[{"name":"type","type":"string","value":"screen"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onanimationend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onanimationiteration","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onanimationstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onsearch","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ontransitionend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkitanimationend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkitanimationiteration","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkitanimationstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwebkittransitionend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isSecureContext","value":{"type":"boolean","value":true},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onabort","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onblur","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncancel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncanplay","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncanplaythrough","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onclick","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onclose","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncontextmenu","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oncuechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondblclick","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondrag","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragenter","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragleave","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragover","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondragstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondrop","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondurationchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onemptied","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onended","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onerror","value":{"type":"function","className":"Function","description":"function (message, filename, line, column, e) {\n that._onUncaughtError(message, filename, line, column, e);\n if (oldOnError) {\n oldOnError.apply(this, arguments);\n }\n }","objectId":"{\"injectedScriptId\":1,\"id\":191}"},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onfocus","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oninput","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"oninvalid","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onkeydown","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onkeypress","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onkeyup","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onload","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onloadeddata","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onloadedmetadata","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onloadstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmousedown","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseenter","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseleave","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmousemove","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseout","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseover","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmouseup","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmousewheel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpause","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onplay","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onplaying","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onprogress","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onratechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onreset","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onresize","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onscroll","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onseeked","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onseeking","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onselect","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onstalled","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onsubmit","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onsuspend","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ontimeupdate","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ontoggle","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onvolumechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwaiting","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onwheel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onauxclick","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ongotpointercapture","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onlostpointercapture","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerdown","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointermove","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerup","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointercancel","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerover","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerout","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerenter","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerleave","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onselectstart","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onselectionchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onafterprint","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onbeforeprint","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onbeforeunload","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onhashchange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onlanguagechange","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmessage","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onmessageerror","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onoffline","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ononline","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpagehide","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpageshow","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpopstate","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onrejectionhandled","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onstorage","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onunhandledrejection","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onunload","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"performance","value":{"type":"object","className":"Performance","description":"Performance","objectId":"{\"injectedScriptId\":1,\"id\":192}","preview":{"type":"object","description":"Performance","overflow":false,"properties":[{"name":"timeOrigin","type":"number","value":"1588425099893.2908"},{"name":"onresourcetimingbufferfull","type":"object","value":"null","subtype":"null"},{"name":"memory","type":"object","value":"MemoryInfo"},{"name":"navigation","type":"object","value":"PerformanceNavigation"},{"name":"timing","type":"object","value":"PerformanceTiming"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"stop","value":{"type":"function","className":"Function","description":"function stop() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":193}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"open","value":{"type":"function","className":"Function","description":"function () {\n throw new Error('Prevented call to window.open(). Use IOpenerService instead!');\n }","objectId":"{\"injectedScriptId\":1,\"id\":194}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"alert","value":{"type":"function","className":"Function","description":"function alert() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":195}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"confirm","value":{"type":"function","className":"Function","description":"function confirm() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":196}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"prompt","value":{"type":"function","className":"Function","description":"function () {\n throw new Error('prompt() is and will not be supported.');\n }","objectId":"{\"injectedScriptId\":1,\"id\":197}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"print","value":{"type":"function","className":"Function","description":"function print() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":198}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"queueMicrotask","value":{"type":"function","className":"Function","description":"function queueMicrotask() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":199}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"requestAnimationFrame","value":{"type":"function","className":"Function","description":"function requestAnimationFrame() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":200}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"cancelAnimationFrame","value":{"type":"function","className":"Function","description":"function cancelAnimationFrame() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":201}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"captureEvents","value":{"type":"function","className":"Function","description":"function captureEvents() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":202}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"releaseEvents","value":{"type":"function","className":"Function","description":"function releaseEvents() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":203}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"requestIdleCallback","value":{"type":"function","className":"Function","description":"function requestIdleCallback() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":204}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"cancelIdleCallback","value":{"type":"function","className":"Function","description":"function cancelIdleCallback() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":205}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"getComputedStyle","value":{"type":"function","className":"Function","description":"function getComputedStyle() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":206}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"matchMedia","value":{"type":"function","className":"Function","description":"function matchMedia() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":207}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"moveTo","value":{"type":"function","className":"Function","description":"function moveTo() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":208}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"moveBy","value":{"type":"function","className":"Function","description":"function moveBy() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":209}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resizeTo","value":{"type":"function","className":"Function","description":"function resizeTo() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":210}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resizeBy","value":{"type":"function","className":"Function","description":"function resizeBy() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":211}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scroll","value":{"type":"function","className":"Function","description":"function scroll() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":212}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollTo","value":{"type":"function","className":"Function","description":"function scrollTo() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":213}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"scrollBy","value":{"type":"function","className":"Function","description":"function scrollBy() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":214}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"getSelection","value":{"type":"function","className":"Function","description":"function getSelection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":215}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"find","value":{"type":"function","className":"Function","description":"function find() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":216}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"webkitRequestAnimationFrame","value":{"type":"function","className":"Function","description":"function webkitRequestAnimationFrame() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":217}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"webkitCancelAnimationFrame","value":{"type":"function","className":"Function","description":"function webkitCancelAnimationFrame() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":218}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"fetch","value":{"type":"function","className":"Function","description":"function fetch() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":219}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"btoa","value":{"type":"function","className":"Function","description":"function btoa() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":220}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"atob","value":{"type":"function","className":"Function","description":"function atob() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":221}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"setTimeout","value":{"type":"function","className":"Function","description":"function setTimeout() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":222}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"clearTimeout","value":{"type":"function","className":"Function","description":"function clearTimeout() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":223}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"setInterval","value":{"type":"function","className":"Function","description":"function setInterval() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":224}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"clearInterval","value":{"type":"function","className":"Function","description":"function clearInterval() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":225}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"createImageBitmap","value":{"type":"function","className":"Function","description":"function createImageBitmap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":226}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onappinstalled","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onbeforeinstallprompt","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"crypto","value":{"type":"object","className":"Crypto","description":"Crypto","objectId":"{\"injectedScriptId\":1,\"id\":227}","preview":{"type":"object","description":"Crypto","overflow":false,"properties":[{"name":"subtle","type":"object","value":"SubtleCrypto"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"indexedDB","value":{"type":"object","className":"IDBFactory","description":"IDBFactory","objectId":"{\"injectedScriptId\":1,\"id\":228}","preview":{"type":"object","description":"IDBFactory","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"webkitStorageInfo","value":{"type":"object","className":"DeprecatedStorageInfo","description":"DeprecatedStorageInfo","objectId":"{\"injectedScriptId\":1,\"id\":229}","preview":{"type":"object","description":"DeprecatedStorageInfo","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"sessionStorage","value":{"type":"object","className":"Storage","description":"Storage","objectId":"{\"injectedScriptId\":1,\"id\":230}","preview":{"type":"object","description":"Storage","overflow":false,"properties":[{"name":"length","type":"number","value":"0"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"localStorage","value":{"type":"object","className":"Storage","description":"Storage","objectId":"{\"injectedScriptId\":1,\"id\":231}","preview":{"type":"object","description":"Storage","overflow":true,"properties":[{"name":"storage://workspace/Users/roblou/code/timey/debug.functionbreakpoint","type":"string","value":"[]"},{"name":"storage://workspace/Users/roblou/code/timey/memento/workbench.parts.editor","type":"string","value":"{\"editorpart.uiState\":{\"widthRatio\":[1]}}"},{"name":"storage://workspace/Users/roblou/code/php-language-server/memento/workbench.view.explorer","type":"string","value":"{\"explorer.memento.expandedFolderResources\":[\"file…hp-language-server/fixtures/completion/html.php\"}"},{"name":"storage://workspace/root:ba09fb0be71b87774e23351a922e914d/debug.viewsweights","type":"string","value":"[445,111.25,333.75,22]"},{"name":"storage://workspace/Users/roblou/code/vscode/memento/workbench.view.explorer","type":"string","value":"{\"openEditors.memento.collapsed\":false,\"explorer.m…de/src/vs/workbench/parts/search/browser/media\"]}"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onformdata","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onpointerrawupdate","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"speechSynthesis","value":{"type":"object","className":"SpeechSynthesis","description":"SpeechSynthesis","objectId":"{\"injectedScriptId\":1,\"id\":232}","preview":{"type":"object","description":"SpeechSynthesis","overflow":false,"properties":[{"name":"pending","type":"boolean","value":"false"},{"name":"speaking","type":"boolean","value":"false"},{"name":"paused","type":"boolean","value":"false"},{"name":"onvoiceschanged","type":"object","value":"null","subtype":"null"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"webkitRequestFileSystem","value":{"type":"function","className":"Function","description":"function () { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":233}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"webkitResolveLocalFileSystemURL","value":{"type":"function","className":"Function","description":"function () { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":234}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"openDatabase","value":{"type":"function","className":"Function","description":"function () { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":235}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"applicationCache","value":{"type":"object","className":"ApplicationCache","description":"ApplicationCache","objectId":"{\"injectedScriptId\":1,\"id\":236}","preview":{"type":"object","description":"ApplicationCache","overflow":true,"properties":[{"name":"status","type":"number","value":"0"},{"name":"oncached","type":"object","value":"null","subtype":"null"},{"name":"onchecking","type":"object","value":"null","subtype":"null"},{"name":"ondownloading","type":"object","value":"null","subtype":"null"},{"name":"onerror","type":"object","value":"null","subtype":"null"}]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"caches","value":{"type":"object","className":"CacheStorage","description":"CacheStorage","objectId":"{\"injectedScriptId\":1,\"id\":237}","preview":{"type":"object","description":"CacheStorage","overflow":false,"properties":[]}},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondevicemotion","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondeviceorientation","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"ondeviceorientationabsolute","value":{"type":"object","subtype":"null","value":null},"writable":false,"configurable":true,"enumerable":true,"isOwn":true},{"name":"global","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":238}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"setImmediate","value":{"type":"function","className":"Function","description":"function (...args) {\n process.activateUvLoop();\n return func.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":239}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"clearImmediate","value":{"type":"function","className":"Function","description":"function clearImmediate(immediate) {\n if (!immediate || immediate._destroyed)\n return;\n\n immediateInfo[kCount]--;\n immediate._destroyed = true;\n\n if (immediate[kRefed] && --immediateInfo[kRefCount] === 0)\n toggleImmediateRef(false);\n immediate[kRefed] = null;\n\n if (destroyHooksExist()) {\n emitDestroy(immediate[async_id_symbol]);\n }\n\n immediate._onImmediate = null;\n\n immediateQueue.remove(immediate);\n}","objectId":"{\"injectedScriptId\":1,\"id\":240}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"module","value":{"type":"object","className":"Module","description":"Module","objectId":"{\"injectedScriptId\":1,\"id\":241}","preview":{"type":"object","description":"Module","overflow":true,"properties":[{"name":"id","type":"string","value":"electron/js2c/renderer_init"},{"name":"path","type":"string","value":"electron/js2c"},{"name":"exports","type":"object","value":"Object"},{"name":"parent","type":"undefined","value":"undefined"},{"name":"filename","type":"string","value":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"require","value":{"type":"function","className":"Function","description":"function () {\n if (arguments.length === 1) {\n if ((arguments[0] instanceof Object) && !Array.isArray(arguments[0])) {\n _requireFunc_config(arguments[0]);\n return;\n }\n if (typeof arguments[0] === 'string') {\n return moduleManager.synchronousRequire(arguments[0]);\n }\n }\n if (arguments.length === 2 || arguments.length === 3) {\n if (Array.isArray(arguments[0])) {\n moduleManager.defineModule(AMDLoader.Utilities.generateAnonymousModule(), arguments[0], arguments[1], arguments[2], null);\n return;\n }\n }\n throw new Error('Unrecognized require call');\n }","objectId":"{\"injectedScriptId\":1,\"id\":242}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__filename","value":{"type":"string","value":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__dirname","value":{"type":"string","value":"/Users/roblou/code/vscode/out/vs/code/electron-browser/workbench"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"showPartsSplash","value":{"type":"function","className":"Function","description":"function showPartsSplash(configuration) {\n\tperf.mark('willShowPartsSplash');\n\n\tlet data;\n\tif (typeof configuration.partsSplashPath === 'string') {\n\t\ttry {\n\t\t\tdata = JSON.parse(require('fs').readFileSync(configuration.partsSplashPath, 'utf8'));\n\t\t} catch (e) {\n\t\t\t// ignore\n\t\t}\n\t}\n\n\t// high contrast mode has been turned on from the outside, e.g. OS -> ignore stored colors and layouts\n\tif (data && configuration.highContrast && data.baseTheme !== 'hc-black') {\n\t\tdata = undefined;\n\t}\n\n\t// developing an extension -> ignore stored layouts\n\tif (data && configuration.extensionDevelopmentPath) {\n\t\tdata.layoutInfo = undefined;\n\t}\n\n\t// minimal color configuration (works with or without persisted data)\n\tconst baseTheme = data ? data.baseTheme : configuration.highContrast ? 'hc-black' : 'vs-dark';\n\tconst shellBackground = data ? data.colorInfo.editorBackground : configuration.highContrast ? '#000000' : '#1E1E1E';\n\tconst shellForeground = data ? data.colorInfo.foreground : configuration.highContrast ? '#FFFFFF' : '#CCCCCC';\n\tconst style = document.createElement('style');\n\tstyle.className = 'initialShellColors';\n\tdocument.head.appendChild(style);\n\tdocument.body.className = baseTheme;\n\tstyle.innerHTML = `body { background-color: ${shellBackground}; color: ${shellForeground}; margin: 0; padding: 0; }`;\n\n\tif (data && data.layoutInfo) {\n\t\t// restore parts if possible (we might not always store layout info)\n\t\tconst { id, layoutInfo, colorInfo } = data;\n\t\tconst splash = document.createElement('div');\n\t\tsplash.id = id;\n\n\t\tif (layoutInfo.windowBorder) {\n\t\t\tsplash.style.position = 'relative';\n\t\t\tsplash.style.height = 'calc(100vh - 2px)';\n\t\t\tsplash.style.width = 'calc(100vw - 2px)';\n\t\t\tsplash.style.border = '1px solid var(--window-border-color)';\n\t\t\tsplash.style.setProperty('--window-border-color', colorInfo.windowBorder);\n\n\t\t\tif (layoutInfo.windowBorderRadius) {\n\t\t\t\tsplash.style.borderRadius = layoutInfo.windowBorderRadius;\n\t\t\t}\n\t\t}\n\n\t\t// ensure there is enough space\n\t\tlayoutInfo.sideBarWidth = Math.min(layoutInfo.sideBarWidth, window.innerWidth - (layoutInfo.activityBarWidth + layoutInfo.editorPartMinWidth));\n\n\t\tif (configuration.folderUri || configuration.workspace) {\n\t\t\t// folder or workspace -> status bar color, sidebar\n\t\t\tsplash.innerHTML = `\n\t\t\t<div style=\"position: absolute; width: 100%; left: 0; top: 0; height: ${layoutInfo.titleBarHeight}px; background-color: ${colorInfo.titleBarBackground}; -webkit-app-region: drag;\"></div>\n\t\t\t<div style=\"position: absolute; height: calc(100% - ${layoutInfo.titleBarHeight}px); top: ${layoutInfo.titleBarHeight}px; ${layoutInfo.sideBarSide}: 0; width: ${layoutInfo.activityBarWidth}px; background-color: ${colorInfo.activityBarBackground};\"></div>\n\t\t\t<div style=\"position: absolute; height: calc(100% - ${layoutInfo.titleBarHeight}px); top: ${layoutInfo.titleBarHeight}px; ${layoutInfo.sideBarSide}: ${layoutInfo.activityBarWidth}px; width: ${layoutInfo.sideBarWidth}px; background-color: ${colorInfo.sideBarBackground};\"></div>\n\t\t\t<div style=\"position: absolute; width: 100%; bottom: 0; left: 0; height: ${layoutInfo.statusBarHeight}px; background-color: ${colorInfo.statusBarBackground};\"></div>\n\t\t\t`;\n\t\t} else {\n\t\t\t// empty -> speical status bar color, no sidebar\n\t\t\tsplash.innerHTML = `\n\t\t\t<div style=\"position: absolute; width: 100%; left: 0; top: 0; height: ${layoutInfo.titleBarHeight}px; background-color: ${colorInfo.titleBarBackground}; -webkit-app-region: drag;\"></div>\n\t\t\t<div style=\"position: absolute; height: calc(100% - ${layoutInfo.titleBarHeight}px); top: ${layoutInfo.titleBarHeight}px; ${layoutInfo.sideBarSide}: 0; width: ${layoutInfo.activityBarWidth}px; background-color: ${colorInfo.activityBarBackground};\"></div>\n\t\t\t<div style=\"position: absolute; width: 100%; bottom: 0; left: 0; height: ${layoutInfo.statusBarHeight}px; background-color: ${colorInfo.statusBarNoFolderBackground};\"></div>\n\t\t\t`;\n\t\t}\n\t\tdocument.body.appendChild(splash);\n\t}\n\n\tperf.mark('didShowPartsSplash');\n}","objectId":"{\"injectedScriptId\":1,\"id\":243}"},"writable":true,"configurable":false,"enumerable":true,"isOwn":true},{"name":"getLazyEnv","value":{"type":"function","className":"Function","description":"function getLazyEnv() {\n\t// @ts-ignore\n\tconst ipc = require('electron').ipcRenderer;\n\n\treturn new Promise(function (resolve) {\n\t\tconst handle = setTimeout(function () {\n\t\t\tresolve();\n\t\t\tconsole.warn('renderer did not receive lazyEnv in time');\n\t\t}, 10000);\n\n\t\tipc.once('vscode:acceptShellEnv', function (event, shellEnv) {\n\t\t\tclearTimeout(handle);\n\t\t\tbootstrapWindow.assign(process.env, shellEnv);\n\t\t\t// @ts-ignore\n\t\t\tresolve(process.env);\n\t\t});\n\n\t\tipc.send('vscode:fetchShellEnv');\n\t});\n}","objectId":"{\"injectedScriptId\":1,\"id\":244}"},"writable":true,"configurable":false,"enumerable":true,"isOwn":true},{"name":"_performanceEntries","value":{"type":"object","subtype":"array","className":"Array","description":"Array(176)","objectId":"{\"injectedScriptId\":1,\"id\":245}","preview":{"type":"object","subtype":"array","description":"Array(176)","overflow":true,"properties":[{"name":"0","type":"string","value":"main:started"},{"name":"1","type":"number","value":"1588425099492"},{"name":"2","type":"string","value":"main:appReady"},{"name":"3","type":"number","value":"1588425099574"},{"name":"4","type":"string","value":"willLoadMainBundle"},{"name":"5","type":"number","value":"1588425099576"},{"name":"6","type":"string","value":"didLoadMainBundle"},{"name":"7","type":"number","value":"1588425099749"},{"name":"8","type":"string","value":"main:loadWindow"},{"name":"9","type":"number","value":"1588425099920"},{"name":"10","type":"string","value":"renderer/started"},{"name":"11","type":"number","value":"1588425100211"},{"name":"12","type":"string","value":"willShowPartsSplash"},{"name":"13","type":"number","value":"1588425100214"},{"name":"14","type":"string","value":"didShowPartsSplash"},{"name":"15","type":"number","value":"1588425100216"},{"name":"16","type":"string","value":"willLoadWorkbenchMain"},{"name":"17","type":"number","value":"1588425100231"},{"name":"18","type":"string","value":"didLoadWorkbenchMain"},{"name":"19","type":"number","value":"1588425102916"},{"name":"20","type":"string","value":"main/startup"},{"name":"21","type":"number","value":"1588425102916"},{"name":"22","type":"string","value":"willInitWorkspaceService"},{"name":"23","type":"number","value":"1588425102943"},{"name":"24","type":"string","value":"willInitWorkspaceStorage"},{"name":"25","type":"number","value":"1588425102952"},{"name":"26","type":"string","value":"didInitWorkspaceService"},{"name":"27","type":"number","value":"1588425102992"},{"name":"28","type":"string","value":"didInitWorkspaceStorage"},{"name":"29","type":"number","value":"1588425102992"},{"name":"30","type":"string","value":"willStartWorkbench"},{"name":"31","type":"number","value":"1588425102993"},{"name":"32","type":"string","value":"LifecyclePhase/Ready"},{"name":"33","type":"number","value":"1588425102996"},{"name":"34","type":"string","value":"willRestoreEditors"},{"name":"35","type":"number","value":"1588425103388"},{"name":"36","type":"string","value":"willRestoreViewlet"},{"name":"37","type":"number","value":"1588425103388"},{"name":"38","type":"string","value":"didRestoreViewlet"},{"name":"39","type":"number","value":"1588425103506"},{"name":"40","type":"string","value":"willLoadExtensions"},{"name":"41","type":"number","value":"1588425103687"},{"name":"42","type":"string","value":"didRestoreEditors"},{"name":"43","type":"number","value":"1588425104013"},{"name":"44","type":"string","value":"LifecyclePhase/Restored"},{"name":"45","type":"number","value":"1588425104014"},{"name":"46","type":"string","value":"didStartWorkbench"},{"name":"47","type":"number","value":"1588425104015"},{"name":"48","type":"string","value":"didRemovePartsSplash"},{"name":"49","type":"number","value":"1588425104015"},{"name":"50","type":"string","value":"willHandleExtensionPoint/commands"},{"name":"51","type":"number","value":"1588425104606"},{"name":"52","type":"string","value":"didHandleExtensionPoint/commands"},{"name":"53","type":"number","value":"1588425104616"},{"name":"54","type":"string","value":"willHandleExtensionPoint/menus"},{"name":"55","type":"number","value":"1588425104616"},{"name":"56","type":"string","value":"didHandleExtensionPoint/menus"},{"name":"57","type":"number","value":"1588425104632"},{"name":"58","type":"string","value":"willHandleExtensionPoint/configurationDefaults"},{"name":"59","type":"number","value":"1588425104632"},{"name":"60","type":"string","value":"didHandleExtensionPoint/configurationDefaults"},{"name":"61","type":"number","value":"1588425104643"},{"name":"62","type":"string","value":"willHandleExtensionPoint/configuration"},{"name":"63","type":"number","value":"1588425104643"},{"name":"64","type":"string","value":"didHandleExtensionPoint/configuration"},{"name":"65","type":"number","value":"1588425104659"},{"name":"66","type":"string","value":"willHandleExtensionPoint/jsonValidation"},{"name":"67","type":"number","value":"1588425104659"},{"name":"68","type":"string","value":"didHandleExtensionPoint/jsonValidation"},{"name":"69","type":"number","value":"1588425104660"},{"name":"70","type":"string","value":"willHandleExtensionPoint/colors"},{"name":"71","type":"number","value":"1588425104660"},{"name":"72","type":"string","value":"didHandleExtensionPoint/colors"},{"name":"73","type":"number","value":"1588425104661"},{"name":"74","type":"string","value":"willHandleExtensionPoint/viewsWelcome"},{"name":"75","type":"number","value":"1588425104661"},{"name":"76","type":"string","value":"didHandleExtensionPoint/viewsWelcome"},{"name":"77","type":"number","value":"1588425104661"},{"name":"78","type":"string","value":"willHandleExtensionPoint/taskDefinitions"},{"name":"79","type":"number","value":"1588425104661"},{"name":"80","type":"string","value":"didHandleExtensionPoint/taskDefinitions"},{"name":"81","type":"number","value":"1588425104661"},{"name":"82","type":"string","value":"willHandleExtensionPoint/problemPatterns"},{"name":"83","type":"number","value":"1588425104662"},{"name":"84","type":"string","value":"didHandleExtensionPoint/problemPatterns"},{"name":"85","type":"number","value":"1588425104663"},{"name":"86","type":"string","value":"willHandleExtensionPoint/problemMatchers"},{"name":"87","type":"number","value":"1588425104663"},{"name":"88","type":"string","value":"didHandleExtensionPoint/problemMatchers"},{"name":"89","type":"number","value":"1588425104664"},{"name":"90","type":"string","value":"willHandleExtensionPoint/resourceLabelFormatters"},{"name":"91","type":"number","value":"1588425104664"},{"name":"92","type":"string","value":"didHandleExtensionPoint/resourceLabelFormatters"},{"name":"93","type":"number","value":"1588425104664"},{"name":"94","type":"string","value":"willHandleExtensionPoint/keybindings"},{"name":"95","type":"number","value":"1588425104664"},{"name":"96","type":"string","value":"didHandleExtensionPoint/keybindings"},{"name":"97","type":"number","value":"1588425104682"},{"name":"98","type":"string","value":"willHandleExtensionPoint/semanticTokenTypes"},{"name":"99","type":"number","value":"1588425104682"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"nodeRequire","value":{"type":"function","className":"Function","description":"function (what) {\n moduleManager.getRecorder().record(33 /* NodeBeginNativeRequire */, what);\n try {\n return _nodeRequire_1(what);\n }\n finally {\n moduleManager.getRecorder().record(34 /* NodeEndNativeRequire */, what);\n }\n }","objectId":"{\"injectedScriptId\":1,\"id\":246}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"MonacoEnvironment","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":247}","preview":{"type":"object","description":"Object","overflow":false,"properties":[]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"WebView","value":{"type":"function","className":"Function","description":"class WebViewElement extends HTMLElement {\n static get observedAttributes() {\n return [\n \"partition\" /* ATTRIBUTE_PARTITION */,\n \"src\" /* ATTRIBUTE_SRC */,\n \"httpreferrer\" /* ATTRIBUTE_HTTPREFERRER */,\n \"useragent\" /* ATTRIBUTE_USERAGENT */,\n \"nodeintegration\" /* ATTRIBUTE_NODEINTEGRATION */,\n \"nodeintegrationinsubframes\" /* ATTRIBUTE_NODEINTEGRATIONINSUBFRAMES */,\n \"plugins\" /* ATTRIBUTE_PLUGINS */,\n \"disablewebsecurity\" /* ATTRIBUTE_DISABLEWEBSECURITY */,\n \"allowpopups\" /* ATTRIBUTE_ALLOWPOPUPS */,\n \"enableremotemodule\" /* ATTRIBUTE_ENABLEREMOTEMODULE */,\n \"preload\" /* ATTRIBUTE_PRELOAD */,\n \"blinkfeatures\" /* ATTRIBUTE_BLINKFEATURES */,\n \"disableblinkfeatures\" /* ATTRIBUTE_DISABLEBLINKFEATURES */,\n \"webpreferences\" /* ATTRIBUTE_WEBPREFERENCES */\n ];\n }\n constructor() {\n super();\n v8Util.setHiddenValue(this, 'internal', new WebViewImpl(this));\n }\n connectedCallback() {\n const internal = v8Util.getHiddenValue(this, 'internal');\n if (!internal) {\n return;\n }\n if (!internal.elementAttached) {\n guestViewInternal.registerEvents(internal, internal.viewInstanceId);\n internal.elementAttached = true;\n internal.attributes[\"src\" /* ATTRIBUTE_SRC */].parse();\n }\n }\n attributeChangedCallback(name, oldValue, newValue) {\n const internal = v8Util.getHiddenValue(this, 'internal');\n if (internal) {\n internal.handleWebviewAttributeMutation(name, oldValue, newValue);\n }\n }\n disconnectedCallback() {\n const internal = v8Util.getHiddenValue(this, 'internal');\n if (!internal) {\n return;\n }\n guestViewInternal.deregisterEvents(internal.viewInstanceId);\n internal.elementAttached = false;\n this.internalInstanceId = 0;\n internal.reset();\n }\n }","objectId":"{\"injectedScriptId\":1,\"id\":248}"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"Object","value":{"type":"function","className":"Function","description":"function Object() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":249}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Function","value":{"type":"function","className":"Function","description":"function Function() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":250}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Array","value":{"type":"function","className":"Function","description":"function Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":251}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Number","value":{"type":"function","className":"Function","description":"function Number() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":252}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"parseFloat","value":{"type":"function","className":"Function","description":"function parseFloat() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":253}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"parseInt","value":{"type":"function","className":"Function","description":"function parseInt() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":254}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Infinity","value":{"type":"number","unserializableValue":"Infinity","description":"Infinity"},"writable":false,"configurable":false,"enumerable":false,"isOwn":true},{"name":"NaN","value":{"type":"number","unserializableValue":"NaN","description":"NaN"},"writable":false,"configurable":false,"enumerable":false,"isOwn":true},{"name":"undefined","value":{"type":"undefined"},"writable":false,"configurable":false,"enumerable":false,"isOwn":true},{"name":"Boolean","value":{"type":"function","className":"Function","description":"function Boolean() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":255}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"String","value":{"type":"function","className":"Function","description":"function String() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":256}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Symbol","value":{"type":"function","className":"Function","description":"function Symbol() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":257}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Date","value":{"type":"function","className":"Function","description":"function Date() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":258}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Promise","value":{"type":"function","className":"Function","description":"function Promise() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":259}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RegExp","value":{"type":"function","className":"Function","description":"function RegExp() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":260}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Error","value":{"type":"function","className":"Function","description":"function Error() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":261}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"EvalError","value":{"type":"function","className":"Function","description":"function EvalError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":262}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RangeError","value":{"type":"function","className":"Function","description":"function RangeError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":263}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ReferenceError","value":{"type":"function","className":"Function","description":"function ReferenceError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":264}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SyntaxError","value":{"type":"function","className":"Function","description":"function SyntaxError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":265}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TypeError","value":{"type":"function","className":"Function","description":"function TypeError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":266}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"URIError","value":{"type":"function","className":"Function","description":"function URIError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":267}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"globalThis","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":268}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"function","value":""},{"name":"blur","type":"function","value":""},{"name":"focus","type":"function","value":""},{"name":"close","type":"function","value":""},{"name":"parent","type":"object","value":"global"}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"JSON","value":{"type":"object","className":"JSON","description":"JSON","objectId":"{\"injectedScriptId\":1,\"id\":269}","preview":{"type":"object","description":"JSON","overflow":false,"properties":[{"name":"parse","type":"function","value":""},{"name":"stringify","type":"function","value":""},{"name":"Symbol(Symbol.toStringTag)","type":"string","value":"JSON"}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Math","value":{"type":"object","className":"Math","description":"Math","objectId":"{\"injectedScriptId\":1,\"id\":270}","preview":{"type":"object","description":"Math","overflow":true,"properties":[{"name":"abs","type":"function","value":""},{"name":"acos","type":"function","value":""},{"name":"acosh","type":"function","value":""},{"name":"asin","type":"function","value":""},{"name":"asinh","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"console","value":{"type":"object","className":"console","description":"console","objectId":"{\"injectedScriptId\":1,\"id\":271}","preview":{"type":"object","description":"console","overflow":true,"properties":[{"name":"debug","type":"function","value":""},{"name":"error","type":"function","value":""},{"name":"info","type":"function","value":""},{"name":"log","type":"function","value":""},{"name":"warn","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Intl","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":272}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"getCanonicalLocales","type":"function","value":""},{"name":"DateTimeFormat","type":"function","value":""},{"name":"NumberFormat","type":"function","value":""},{"name":"Collator","type":"function","value":""},{"name":"PluralRules","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ArrayBuffer","value":{"type":"function","className":"Function","description":"function ArrayBuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":273}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Uint8Array","value":{"type":"function","className":"Function","description":"function Uint8Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":274}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Int8Array","value":{"type":"function","className":"Function","description":"function Int8Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":275}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Uint16Array","value":{"type":"function","className":"Function","description":"function Uint16Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":276}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Int16Array","value":{"type":"function","className":"Function","description":"function Int16Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":277}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Uint32Array","value":{"type":"function","className":"Function","description":"function Uint32Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":278}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Int32Array","value":{"type":"function","className":"Function","description":"function Int32Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":279}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Float32Array","value":{"type":"function","className":"Function","description":"function Float32Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":280}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Float64Array","value":{"type":"function","className":"Function","description":"function Float64Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":281}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Uint8ClampedArray","value":{"type":"function","className":"Function","description":"function Uint8ClampedArray() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":282}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BigUint64Array","value":{"type":"function","className":"Function","description":"function BigUint64Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":283}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BigInt64Array","value":{"type":"function","className":"Function","description":"function BigInt64Array() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":284}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DataView","value":{"type":"function","className":"Function","description":"function DataView() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":285}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Map","value":{"type":"function","className":"Function","description":"function Map() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":286}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BigInt","value":{"type":"function","className":"Function","description":"function BigInt() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":287}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Set","value":{"type":"function","className":"Function","description":"function Set() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":288}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WeakMap","value":{"type":"function","className":"Function","description":"function WeakMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":289}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WeakSet","value":{"type":"function","className":"Function","description":"function WeakSet() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":290}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Proxy","value":{"type":"function","className":"Function","description":"function Proxy() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":291}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Reflect","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":292}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"defineProperty","type":"function","value":""},{"name":"deleteProperty","type":"function","value":""},{"name":"apply","type":"function","value":""},{"name":"construct","type":"function","value":""},{"name":"get","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"decodeURI","value":{"type":"function","className":"Function","description":"function decodeURI() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":293}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"decodeURIComponent","value":{"type":"function","className":"Function","description":"function decodeURIComponent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":294}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"encodeURI","value":{"type":"function","className":"Function","description":"function encodeURI() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":295}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"encodeURIComponent","value":{"type":"function","className":"Function","description":"function encodeURIComponent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":296}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"escape","value":{"type":"function","className":"Function","description":"function escape() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":297}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"unescape","value":{"type":"function","className":"Function","description":"function unescape() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":298}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"eval","value":{"type":"function","className":"Function","description":"function eval() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":299}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"isFinite","value":{"type":"function","className":"Function","description":"function isFinite() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":300}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"isNaN","value":{"type":"function","className":"Function","description":"function isNaN() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":301}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ByteLengthQueuingStrategy","value":{"type":"function","className":"Function","description":"function ByteLengthQueuingStrategy() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":302}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CountQueuingStrategy","value":{"type":"function","className":"Function","description":"function CountQueuingStrategy() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":303}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitRTCPeerConnection","value":{"type":"function","className":"Function","description":"function RTCPeerConnection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":304}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitMediaStream","value":{"type":"function","className":"Function","description":"function MediaStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":305}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebSocket","value":{"type":"function","className":"Function","description":"function WebSocket() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":306}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLVertexArrayObject","value":{"type":"function","className":"Function","description":"function WebGLVertexArrayObject() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":307}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLUniformLocation","value":{"type":"function","className":"Function","description":"function WebGLUniformLocation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":308}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLTransformFeedback","value":{"type":"function","className":"Function","description":"function WebGLTransformFeedback() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":309}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLTexture","value":{"type":"function","className":"Function","description":"function WebGLTexture() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":310}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLSync","value":{"type":"function","className":"Function","description":"function WebGLSync() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":311}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLShaderPrecisionFormat","value":{"type":"function","className":"Function","description":"function WebGLShaderPrecisionFormat() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":312}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLShader","value":{"type":"function","className":"Function","description":"function WebGLShader() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":313}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLSampler","value":{"type":"function","className":"Function","description":"function WebGLSampler() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":314}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLRenderingContext","value":{"type":"function","className":"Function","description":"function WebGLRenderingContext() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":315}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLRenderbuffer","value":{"type":"function","className":"Function","description":"function WebGLRenderbuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":316}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLQuery","value":{"type":"function","className":"Function","description":"function WebGLQuery() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":317}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLProgram","value":{"type":"function","className":"Function","description":"function WebGLProgram() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":318}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLFramebuffer","value":{"type":"function","className":"Function","description":"function WebGLFramebuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":319}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLContextEvent","value":{"type":"function","className":"Function","description":"function WebGLContextEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":320}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLBuffer","value":{"type":"function","className":"Function","description":"function WebGLBuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":321}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGLActiveInfo","value":{"type":"function","className":"Function","description":"function WebGLActiveInfo() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":322}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebGL2RenderingContext","value":{"type":"function","className":"Function","description":"function WebGL2RenderingContext() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":323}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WaveShaperNode","value":{"type":"function","className":"Function","description":"function WaveShaperNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":324}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextEncoderStream","value":{"type":"function","className":"Function","description":"function TextEncoderStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":325}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextEncoder","value":{"type":"function","className":"Function","description":"function TextEncoder() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":326}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextDecoderStream","value":{"type":"function","className":"Function","description":"function TextDecoderStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":327}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextDecoder","value":{"type":"function","className":"Function","description":"function TextDecoder() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":328}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SyncManager","value":{"type":"function","className":"Function","description":"function SyncManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":329}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SubtleCrypto","value":{"type":"function","className":"Function","description":"function SubtleCrypto() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":330}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StorageEvent","value":{"type":"function","className":"Function","description":"function StorageEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":331}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Storage","value":{"type":"function","className":"Function","description":"function Storage() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":332}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StereoPannerNode","value":{"type":"function","className":"Function","description":"function StereoPannerNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":333}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SourceBufferList","value":{"type":"function","className":"Function","description":"function SourceBufferList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":334}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SourceBuffer","value":{"type":"function","className":"Function","description":"function SourceBuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":335}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ScriptProcessorNode","value":{"type":"function","className":"Function","description":"function ScriptProcessorNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":336}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ScreenOrientation","value":{"type":"function","className":"Function","description":"function ScreenOrientation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":337}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCTrackEvent","value":{"type":"function","className":"Function","description":"function RTCTrackEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":338}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCStatsReport","value":{"type":"function","className":"Function","description":"function RTCStatsReport() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":339}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCSessionDescription","value":{"type":"function","className":"Function","description":"function RTCSessionDescription() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":340}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCRtpTransceiver","value":{"type":"function","className":"Function","description":"function RTCRtpTransceiver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":341}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCRtpSender","value":{"type":"function","className":"Function","description":"function RTCRtpSender() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":342}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCRtpReceiver","value":{"type":"function","className":"Function","description":"function RTCRtpReceiver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":343}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCPeerConnectionIceEvent","value":{"type":"function","className":"Function","description":"function RTCPeerConnectionIceEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":344}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCPeerConnectionIceErrorEvent","value":{"type":"function","className":"Function","description":"function RTCPeerConnectionIceErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":345}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCPeerConnection","value":{"type":"function","className":"Function","description":"function RTCPeerConnection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":346}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCIceCandidate","value":{"type":"function","className":"Function","description":"function RTCIceCandidate() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":347}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCErrorEvent","value":{"type":"function","className":"Function","description":"function RTCErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":348}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCError","value":{"type":"function","className":"Function","description":"function RTCError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":349}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCDataChannelEvent","value":{"type":"function","className":"Function","description":"function RTCDataChannelEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":350}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCDataChannel","value":{"type":"function","className":"Function","description":"function RTCDataChannel() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":351}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCDTMFToneChangeEvent","value":{"type":"function","className":"Function","description":"function RTCDTMFToneChangeEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":352}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCDTMFSender","value":{"type":"function","className":"Function","description":"function RTCDTMFSender() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":353}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCCertificate","value":{"type":"function","className":"Function","description":"function RTCCertificate() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":354}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Plugin","value":{"type":"function","className":"Function","description":"function Plugin() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":355}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PluginArray","value":{"type":"function","className":"Function","description":"function PluginArray() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":356}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PhotoCapabilities","value":{"type":"function","className":"Function","description":"function PhotoCapabilities() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":357}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PeriodicWave","value":{"type":"function","className":"Function","description":"function PeriodicWave() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":358}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Path2D","value":{"type":"function","className":"Function","description":"function Path2D() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":359}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PannerNode","value":{"type":"function","className":"Function","description":"function PannerNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":360}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OverconstrainedError","value":{"type":"function","className":"Function","description":"function OverconstrainedError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":361}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OscillatorNode","value":{"type":"function","className":"Function","description":"function OscillatorNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":362}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OfflineAudioContext","value":{"type":"function","className":"Function","description":"function OfflineAudioContext() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":363}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OfflineAudioCompletionEvent","value":{"type":"function","className":"Function","description":"function OfflineAudioCompletionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":364}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"NetworkInformation","value":{"type":"function","className":"Function","description":"function NetworkInformation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":365}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MimeType","value":{"type":"function","className":"Function","description":"function MimeType() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":366}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MimeTypeArray","value":{"type":"function","className":"Function","description":"function MimeTypeArray() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":367}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaStreamTrackEvent","value":{"type":"function","className":"Function","description":"function MediaStreamTrackEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":368}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaStreamTrack","value":{"type":"function","className":"Function","description":"function MediaStreamTrack() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":369}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaStreamEvent","value":{"type":"function","className":"Function","description":"function MediaStreamEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":370}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaStream","value":{"type":"function","className":"Function","description":"function MediaStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":371}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaStreamAudioSourceNode","value":{"type":"function","className":"Function","description":"function MediaStreamAudioSourceNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":372}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaStreamAudioDestinationNode","value":{"type":"function","className":"Function","description":"function MediaStreamAudioDestinationNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":373}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaSettingsRange","value":{"type":"function","className":"Function","description":"function MediaSettingsRange() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":374}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaRecorder","value":{"type":"function","className":"Function","description":"function MediaRecorder() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":375}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaEncryptedEvent","value":{"type":"function","className":"Function","description":"function MediaEncryptedEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":376}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaElementAudioSourceNode","value":{"type":"function","className":"Function","description":"function MediaElementAudioSourceNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":377}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaCapabilities","value":{"type":"function","className":"Function","description":"function MediaCapabilities() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":378}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"InputDeviceInfo","value":{"type":"function","className":"Function","description":"function InputDeviceInfo() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":379}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ImageCapture","value":{"type":"function","className":"Function","description":"function ImageCapture() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":380}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ImageBitmapRenderingContext","value":{"type":"function","className":"Function","description":"function ImageBitmapRenderingContext() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":381}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IIRFilterNode","value":{"type":"function","className":"Function","description":"function IIRFilterNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":382}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBVersionChangeEvent","value":{"type":"function","className":"Function","description":"function IDBVersionChangeEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":383}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBTransaction","value":{"type":"function","className":"Function","description":"function IDBTransaction() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":384}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBRequest","value":{"type":"function","className":"Function","description":"function IDBRequest() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":385}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBOpenDBRequest","value":{"type":"function","className":"Function","description":"function IDBOpenDBRequest() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":386}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBObjectStore","value":{"type":"function","className":"Function","description":"function IDBObjectStore() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":387}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBKeyRange","value":{"type":"function","className":"Function","description":"function IDBKeyRange() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":388}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBIndex","value":{"type":"function","className":"Function","description":"function IDBIndex() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":389}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBFactory","value":{"type":"function","className":"Function","description":"function IDBFactory() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":390}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBDatabase","value":{"type":"function","className":"Function","description":"function IDBDatabase() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":391}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBCursorWithValue","value":{"type":"function","className":"Function","description":"function IDBCursorWithValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":392}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IDBCursor","value":{"type":"function","className":"Function","description":"function IDBCursor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":393}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"GamepadHapticActuator","value":{"type":"function","className":"Function","description":"function GamepadHapticActuator() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":394}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"GamepadEvent","value":{"type":"function","className":"Function","description":"function GamepadEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":395}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Gamepad","value":{"type":"function","className":"Function","description":"function Gamepad() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":396}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"GamepadButton","value":{"type":"function","className":"Function","description":"function GamepadButton() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":397}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"GainNode","value":{"type":"function","className":"Function","description":"function GainNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":398}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"EventSource","value":{"type":"function","className":"Function","description":"function EventSource() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":399}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DynamicsCompressorNode","value":{"type":"function","className":"Function","description":"function DynamicsCompressorNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":400}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DelayNode","value":{"type":"function","className":"Function","description":"function DelayNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":401}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMError","value":{"type":"function","className":"Function","description":"function DOMError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":402}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CryptoKey","value":{"type":"function","className":"Function","description":"function CryptoKey() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":403}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Crypto","value":{"type":"function","className":"Function","description":"function Crypto() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":404}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ConvolverNode","value":{"type":"function","className":"Function","description":"function ConvolverNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":405}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ConstantSourceNode","value":{"type":"function","className":"Function","description":"function ConstantSourceNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":406}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CloseEvent","value":{"type":"function","className":"Function","description":"function CloseEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":407}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ChannelSplitterNode","value":{"type":"function","className":"Function","description":"function ChannelSplitterNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":408}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ChannelMergerNode","value":{"type":"function","className":"Function","description":"function ChannelMergerNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":409}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CanvasRenderingContext2D","value":{"type":"function","className":"Function","description":"function CanvasRenderingContext2D() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":410}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CanvasPattern","value":{"type":"function","className":"Function","description":"function CanvasPattern() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":411}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CanvasGradient","value":{"type":"function","className":"Function","description":"function CanvasGradient() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":412}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CanvasCaptureMediaStreamTrack","value":{"type":"function","className":"Function","description":"function CanvasCaptureMediaStreamTrack() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":413}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BroadcastChannel","value":{"type":"function","className":"Function","description":"function BroadcastChannel() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":414}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BlobEvent","value":{"type":"function","className":"Function","description":"function BlobEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":415}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BiquadFilterNode","value":{"type":"function","className":"Function","description":"function BiquadFilterNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":416}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BeforeInstallPromptEvent","value":{"type":"function","className":"Function","description":"function BeforeInstallPromptEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":417}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BatteryManager","value":{"type":"function","className":"Function","description":"function BatteryManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":418}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BaseAudioContext","value":{"type":"function","className":"Function","description":"function BaseAudioContext() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":419}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioWorkletNode","value":{"type":"function","className":"Function","description":"function AudioWorkletNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":420}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioScheduledSourceNode","value":{"type":"function","className":"Function","description":"function AudioScheduledSourceNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":421}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioProcessingEvent","value":{"type":"function","className":"Function","description":"function AudioProcessingEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":422}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioParamMap","value":{"type":"function","className":"Function","description":"function AudioParamMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":423}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioParam","value":{"type":"function","className":"Function","description":"function AudioParam() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":424}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioNode","value":{"type":"function","className":"Function","description":"function AudioNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":425}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioListener","value":{"type":"function","className":"Function","description":"function AudioListener() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":426}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioDestinationNode","value":{"type":"function","className":"Function","description":"function AudioDestinationNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":427}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioContext","value":{"type":"function","className":"Function","description":"function AudioContext() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":428}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioBufferSourceNode","value":{"type":"function","className":"Function","description":"function AudioBufferSourceNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":429}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioBuffer","value":{"type":"function","className":"Function","description":"function AudioBuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":430}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AnalyserNode","value":{"type":"function","className":"Function","description":"function AnalyserNode() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":431}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XPathResult","value":{"type":"function","className":"Function","description":"function XPathResult() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":432}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XPathExpression","value":{"type":"function","className":"Function","description":"function XPathExpression() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":433}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XPathEvaluator","value":{"type":"function","className":"Function","description":"function XPathEvaluator() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":434}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XMLSerializer","value":{"type":"function","className":"Function","description":"function XMLSerializer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":435}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XMLHttpRequestUpload","value":{"type":"function","className":"Function","description":"function XMLHttpRequestUpload() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":436}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XMLHttpRequestEventTarget","value":{"type":"function","className":"Function","description":"function XMLHttpRequestEventTarget() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":437}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XMLHttpRequest","value":{"type":"function","className":"Function","description":"function XMLHttpRequest() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":438}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XMLDocument","value":{"type":"function","className":"Function","description":"function XMLDocument() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":439}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WritableStream","value":{"type":"function","className":"Function","description":"function WritableStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":440}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Worker","value":{"type":"function","className":"Function","description":"function Worker() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":441}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Window","value":{"type":"function","className":"Function","description":"function Window() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":442}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WheelEvent","value":{"type":"function","className":"Function","description":"function WheelEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":443}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"VisualViewport","value":{"type":"function","className":"Function","description":"function VisualViewport() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":444}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ValidityState","value":{"type":"function","className":"Function","description":"function ValidityState() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":445}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"VTTCue","value":{"type":"function","className":"Function","description":"function VTTCue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":446}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"URLSearchParams","value":{"type":"function","className":"Function","description":"function URLSearchParams() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":447}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"URL","value":{"type":"function","className":"Function","description":"function URL() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":448}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"UIEvent","value":{"type":"function","className":"Function","description":"function UIEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":449}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TreeWalker","value":{"type":"function","className":"Function","description":"function TreeWalker() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":450}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TransitionEvent","value":{"type":"function","className":"Function","description":"function TransitionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":451}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TransformStream","value":{"type":"function","className":"Function","description":"function TransformStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":452}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TrackEvent","value":{"type":"function","className":"Function","description":"function TrackEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":453}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TouchList","value":{"type":"function","className":"Function","description":"function TouchList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":454}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TouchEvent","value":{"type":"function","className":"Function","description":"function TouchEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":455}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Touch","value":{"type":"function","className":"Function","description":"function Touch() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":456}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TimeRanges","value":{"type":"function","className":"Function","description":"function TimeRanges() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":457}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextTrackList","value":{"type":"function","className":"Function","description":"function TextTrackList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":458}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextTrackCueList","value":{"type":"function","className":"Function","description":"function TextTrackCueList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":459}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextTrackCue","value":{"type":"function","className":"Function","description":"function TextTrackCue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":460}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextTrack","value":{"type":"function","className":"Function","description":"function TextTrack() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":461}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextMetrics","value":{"type":"function","className":"Function","description":"function TextMetrics() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":462}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TextEvent","value":{"type":"function","className":"Function","description":"function TextEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":463}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Text","value":{"type":"function","className":"Function","description":"function Text() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":464}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"TaskAttributionTiming","value":{"type":"function","className":"Function","description":"function TaskAttributionTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":465}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StyleSheetList","value":{"type":"function","className":"Function","description":"function StyleSheetList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":466}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StyleSheet","value":{"type":"function","className":"Function","description":"function StyleSheet() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":467}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StylePropertyMapReadOnly","value":{"type":"function","className":"Function","description":"function StylePropertyMapReadOnly() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":468}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StylePropertyMap","value":{"type":"function","className":"Function","description":"function StylePropertyMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":469}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StaticRange","value":{"type":"function","className":"Function","description":"function StaticRange() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":470}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ShadowRoot","value":{"type":"function","className":"Function","description":"function ShadowRoot() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":471}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Selection","value":{"type":"function","className":"Function","description":"function Selection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":472}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SecurityPolicyViolationEvent","value":{"type":"function","className":"Function","description":"function SecurityPolicyViolationEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":473}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Screen","value":{"type":"function","className":"Function","description":"function Screen() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":474}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGViewElement","value":{"type":"function","className":"Function","description":"function SVGViewElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":475}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGUseElement","value":{"type":"function","className":"Function","description":"function SVGUseElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":476}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGUnitTypes","value":{"type":"function","className":"Function","description":"function SVGUnitTypes() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":477}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTransformList","value":{"type":"function","className":"Function","description":"function SVGTransformList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":478}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTransform","value":{"type":"function","className":"Function","description":"function SVGTransform() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":479}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTitleElement","value":{"type":"function","className":"Function","description":"function SVGTitleElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":480}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTextPositioningElement","value":{"type":"function","className":"Function","description":"function SVGTextPositioningElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":481}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTextPathElement","value":{"type":"function","className":"Function","description":"function SVGTextPathElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":482}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTextElement","value":{"type":"function","className":"Function","description":"function SVGTextElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":483}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTextContentElement","value":{"type":"function","className":"Function","description":"function SVGTextContentElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":484}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGTSpanElement","value":{"type":"function","className":"Function","description":"function SVGTSpanElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":485}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGSymbolElement","value":{"type":"function","className":"Function","description":"function SVGSymbolElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":486}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGSwitchElement","value":{"type":"function","className":"Function","description":"function SVGSwitchElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":487}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGStyleElement","value":{"type":"function","className":"Function","description":"function SVGStyleElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":488}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGStringList","value":{"type":"function","className":"Function","description":"function SVGStringList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":489}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGStopElement","value":{"type":"function","className":"Function","description":"function SVGStopElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":490}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGSetElement","value":{"type":"function","className":"Function","description":"function SVGSetElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":491}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGScriptElement","value":{"type":"function","className":"Function","description":"function SVGScriptElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":492}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGSVGElement","value":{"type":"function","className":"Function","description":"function SVGSVGElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":493}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGRectElement","value":{"type":"function","className":"Function","description":"function SVGRectElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":494}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGRect","value":{"type":"function","className":"Function","description":"function SVGRect() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":495}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGRadialGradientElement","value":{"type":"function","className":"Function","description":"function SVGRadialGradientElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":496}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPreserveAspectRatio","value":{"type":"function","className":"Function","description":"function SVGPreserveAspectRatio() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":497}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPolylineElement","value":{"type":"function","className":"Function","description":"function SVGPolylineElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":498}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPolygonElement","value":{"type":"function","className":"Function","description":"function SVGPolygonElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":499}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPointList","value":{"type":"function","className":"Function","description":"function SVGPointList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":500}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPoint","value":{"type":"function","className":"Function","description":"function SVGPoint() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":501}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPatternElement","value":{"type":"function","className":"Function","description":"function SVGPatternElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":502}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGPathElement","value":{"type":"function","className":"Function","description":"function SVGPathElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":503}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGNumberList","value":{"type":"function","className":"Function","description":"function SVGNumberList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":504}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGNumber","value":{"type":"function","className":"Function","description":"function SVGNumber() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":505}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGMetadataElement","value":{"type":"function","className":"Function","description":"function SVGMetadataElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":506}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGMatrix","value":{"type":"function","className":"Function","description":"function SVGMatrix() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":507}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGMaskElement","value":{"type":"function","className":"Function","description":"function SVGMaskElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":508}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGMarkerElement","value":{"type":"function","className":"Function","description":"function SVGMarkerElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":509}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGMPathElement","value":{"type":"function","className":"Function","description":"function SVGMPathElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":510}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGLinearGradientElement","value":{"type":"function","className":"Function","description":"function SVGLinearGradientElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":511}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGLineElement","value":{"type":"function","className":"Function","description":"function SVGLineElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":512}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGLengthList","value":{"type":"function","className":"Function","description":"function SVGLengthList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":513}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGLength","value":{"type":"function","className":"Function","description":"function SVGLength() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":514}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGImageElement","value":{"type":"function","className":"Function","description":"function SVGImageElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":515}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGGraphicsElement","value":{"type":"function","className":"Function","description":"function SVGGraphicsElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":516}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGGradientElement","value":{"type":"function","className":"Function","description":"function SVGGradientElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":517}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGGeometryElement","value":{"type":"function","className":"Function","description":"function SVGGeometryElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":518}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGGElement","value":{"type":"function","className":"Function","description":"function SVGGElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":519}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGForeignObjectElement","value":{"type":"function","className":"Function","description":"function SVGForeignObjectElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":520}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFilterElement","value":{"type":"function","className":"Function","description":"function SVGFilterElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":521}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFETurbulenceElement","value":{"type":"function","className":"Function","description":"function SVGFETurbulenceElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":522}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFETileElement","value":{"type":"function","className":"Function","description":"function SVGFETileElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":523}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFESpotLightElement","value":{"type":"function","className":"Function","description":"function SVGFESpotLightElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":524}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFESpecularLightingElement","value":{"type":"function","className":"Function","description":"function SVGFESpecularLightingElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":525}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEPointLightElement","value":{"type":"function","className":"Function","description":"function SVGFEPointLightElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":526}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEOffsetElement","value":{"type":"function","className":"Function","description":"function SVGFEOffsetElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":527}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEMorphologyElement","value":{"type":"function","className":"Function","description":"function SVGFEMorphologyElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":528}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEMergeNodeElement","value":{"type":"function","className":"Function","description":"function SVGFEMergeNodeElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":529}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEMergeElement","value":{"type":"function","className":"Function","description":"function SVGFEMergeElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":530}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEImageElement","value":{"type":"function","className":"Function","description":"function SVGFEImageElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":531}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEGaussianBlurElement","value":{"type":"function","className":"Function","description":"function SVGFEGaussianBlurElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":532}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEFuncRElement","value":{"type":"function","className":"Function","description":"function SVGFEFuncRElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":533}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEFuncGElement","value":{"type":"function","className":"Function","description":"function SVGFEFuncGElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":534}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEFuncBElement","value":{"type":"function","className":"Function","description":"function SVGFEFuncBElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":535}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEFuncAElement","value":{"type":"function","className":"Function","description":"function SVGFEFuncAElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":536}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEFloodElement","value":{"type":"function","className":"Function","description":"function SVGFEFloodElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":537}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEDropShadowElement","value":{"type":"function","className":"Function","description":"function SVGFEDropShadowElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":538}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEDistantLightElement","value":{"type":"function","className":"Function","description":"function SVGFEDistantLightElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":539}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEDisplacementMapElement","value":{"type":"function","className":"Function","description":"function SVGFEDisplacementMapElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":540}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEDiffuseLightingElement","value":{"type":"function","className":"Function","description":"function SVGFEDiffuseLightingElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":541}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEConvolveMatrixElement","value":{"type":"function","className":"Function","description":"function SVGFEConvolveMatrixElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":542}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFECompositeElement","value":{"type":"function","className":"Function","description":"function SVGFECompositeElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":543}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEComponentTransferElement","value":{"type":"function","className":"Function","description":"function SVGFEComponentTransferElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":544}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEColorMatrixElement","value":{"type":"function","className":"Function","description":"function SVGFEColorMatrixElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":545}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGFEBlendElement","value":{"type":"function","className":"Function","description":"function SVGFEBlendElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":546}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGEllipseElement","value":{"type":"function","className":"Function","description":"function SVGEllipseElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":547}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGElement","value":{"type":"function","className":"Function","description":"function SVGElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":548}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGDiscardElement","value":{"type":"function","className":"Function","description":"function SVGDiscardElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":549}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGDescElement","value":{"type":"function","className":"Function","description":"function SVGDescElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":550}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGDefsElement","value":{"type":"function","className":"Function","description":"function SVGDefsElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":551}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGComponentTransferFunctionElement","value":{"type":"function","className":"Function","description":"function SVGComponentTransferFunctionElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":552}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGClipPathElement","value":{"type":"function","className":"Function","description":"function SVGClipPathElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":553}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGCircleElement","value":{"type":"function","className":"Function","description":"function SVGCircleElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":554}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimationElement","value":{"type":"function","className":"Function","description":"function SVGAnimationElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":555}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedTransformList","value":{"type":"function","className":"Function","description":"function SVGAnimatedTransformList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":556}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedString","value":{"type":"function","className":"Function","description":"function SVGAnimatedString() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":557}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedRect","value":{"type":"function","className":"Function","description":"function SVGAnimatedRect() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":558}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedPreserveAspectRatio","value":{"type":"function","className":"Function","description":"function SVGAnimatedPreserveAspectRatio() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":559}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedNumberList","value":{"type":"function","className":"Function","description":"function SVGAnimatedNumberList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":560}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedNumber","value":{"type":"function","className":"Function","description":"function SVGAnimatedNumber() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":561}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedLengthList","value":{"type":"function","className":"Function","description":"function SVGAnimatedLengthList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":562}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedLength","value":{"type":"function","className":"Function","description":"function SVGAnimatedLength() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":563}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedInteger","value":{"type":"function","className":"Function","description":"function SVGAnimatedInteger() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":564}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedEnumeration","value":{"type":"function","className":"Function","description":"function SVGAnimatedEnumeration() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":565}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedBoolean","value":{"type":"function","className":"Function","description":"function SVGAnimatedBoolean() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":566}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimatedAngle","value":{"type":"function","className":"Function","description":"function SVGAnimatedAngle() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":567}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimateTransformElement","value":{"type":"function","className":"Function","description":"function SVGAnimateTransformElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":568}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimateMotionElement","value":{"type":"function","className":"Function","description":"function SVGAnimateMotionElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":569}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAnimateElement","value":{"type":"function","className":"Function","description":"function SVGAnimateElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":570}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAngle","value":{"type":"function","className":"Function","description":"function SVGAngle() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":571}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SVGAElement","value":{"type":"function","className":"Function","description":"function SVGAElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":572}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Response","value":{"type":"function","className":"Function","description":"function Response() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":573}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ResizeObserverEntry","value":{"type":"function","className":"Function","description":"function ResizeObserverEntry() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":574}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ResizeObserver","value":{"type":"function","className":"Function","description":"function ResizeObserver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":575}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Request","value":{"type":"function","className":"Function","description":"function Request() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":576}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ReportingObserver","value":{"type":"function","className":"Function","description":"function ReportingObserver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":577}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ReadableStream","value":{"type":"function","className":"Function","description":"function ReadableStream() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":578}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Range","value":{"type":"function","className":"Function","description":"function Range() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":579}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RadioNodeList","value":{"type":"function","className":"Function","description":"function RadioNodeList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":580}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PromiseRejectionEvent","value":{"type":"function","className":"Function","description":"function PromiseRejectionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":581}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ProgressEvent","value":{"type":"function","className":"Function","description":"function ProgressEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":582}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ProcessingInstruction","value":{"type":"function","className":"Function","description":"function ProcessingInstruction() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":583}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PopStateEvent","value":{"type":"function","className":"Function","description":"function PopStateEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":584}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PointerEvent","value":{"type":"function","className":"Function","description":"function PointerEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":585}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceTiming","value":{"type":"function","className":"Function","description":"function PerformanceTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":586}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceServerTiming","value":{"type":"function","className":"Function","description":"function PerformanceServerTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":587}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceResourceTiming","value":{"type":"function","className":"Function","description":"function PerformanceResourceTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":588}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformancePaintTiming","value":{"type":"function","className":"Function","description":"function PerformancePaintTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":589}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceObserverEntryList","value":{"type":"function","className":"Function","description":"function PerformanceObserverEntryList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":590}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceObserver","value":{"type":"function","className":"Function","description":"function PerformanceObserver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":591}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceNavigationTiming","value":{"type":"function","className":"Function","description":"function PerformanceNavigationTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":592}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceNavigation","value":{"type":"function","className":"Function","description":"function PerformanceNavigation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":593}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceMeasure","value":{"type":"function","className":"Function","description":"function PerformanceMeasure() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":594}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceMark","value":{"type":"function","className":"Function","description":"function PerformanceMark() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":595}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceLongTaskTiming","value":{"type":"function","className":"Function","description":"function PerformanceLongTaskTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":596}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceEventTiming","value":{"type":"function","className":"Function","description":"function PerformanceEventTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":597}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceEntry","value":{"type":"function","className":"Function","description":"function PerformanceEntry() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":598}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Performance","value":{"type":"function","className":"Function","description":"function Performance() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":599}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PageTransitionEvent","value":{"type":"function","className":"Function","description":"function PageTransitionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":600}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"NodeList","value":{"type":"function","className":"Function","description":"function NodeList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":601}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"NodeIterator","value":{"type":"function","className":"Function","description":"function NodeIterator() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":602}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"NodeFilter","value":{"type":"function","className":"Function","description":"function NodeFilter() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":603}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Node","value":{"type":"function","className":"Function","description":"function Node() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":604}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Navigator","value":{"type":"function","className":"Function","description":"function Navigator() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":605}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"NamedNodeMap","value":{"type":"function","className":"Function","description":"function NamedNodeMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":606}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MutationRecord","value":{"type":"function","className":"Function","description":"function MutationRecord() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":607}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MutationObserver","value":{"type":"function","className":"Function","description":"function MutationObserver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":608}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MutationEvent","value":{"type":"function","className":"Function","description":"function MutationEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":609}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MouseEvent","value":{"type":"function","className":"Function","description":"function MouseEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":610}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MessagePort","value":{"type":"function","className":"Function","description":"function MessagePort() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":611}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MessageEvent","value":{"type":"function","className":"Function","description":"function MessageEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":612}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MessageChannel","value":{"type":"function","className":"Function","description":"function MessageChannel() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":613}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaQueryListEvent","value":{"type":"function","className":"Function","description":"function MediaQueryListEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":614}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaQueryList","value":{"type":"function","className":"Function","description":"function MediaQueryList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":615}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaList","value":{"type":"function","className":"Function","description":"function MediaList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":616}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaError","value":{"type":"function","className":"Function","description":"function MediaError() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":617}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Location","value":{"type":"function","className":"Function","description":"function Location() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":618}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"KeyframeEffect","value":{"type":"function","className":"Function","description":"function KeyframeEffect() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":619}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"KeyboardEvent","value":{"type":"function","className":"Function","description":"function KeyboardEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":620}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IntersectionObserverEntry","value":{"type":"function","className":"Function","description":"function IntersectionObserverEntry() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":621}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IntersectionObserver","value":{"type":"function","className":"Function","description":"function IntersectionObserver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":622}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"InputEvent","value":{"type":"function","className":"Function","description":"function InputEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":623}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"InputDeviceCapabilities","value":{"type":"function","className":"Function","description":"function InputDeviceCapabilities() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":624}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ImageData","value":{"type":"function","className":"Function","description":"function ImageData() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":625}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ImageBitmap","value":{"type":"function","className":"Function","description":"function ImageBitmap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":626}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"IdleDeadline","value":{"type":"function","className":"Function","description":"function IdleDeadline() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":627}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"History","value":{"type":"function","className":"Function","description":"function History() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":628}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Headers","value":{"type":"function","className":"Function","description":"function Headers() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":629}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HashChangeEvent","value":{"type":"function","className":"Function","description":"function HashChangeEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":630}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLVideoElement","value":{"type":"function","className":"Function","description":"function HTMLVideoElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":631}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLUnknownElement","value":{"type":"function","className":"Function","description":"function HTMLUnknownElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":632}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLUListElement","value":{"type":"function","className":"Function","description":"function HTMLUListElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":633}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTrackElement","value":{"type":"function","className":"Function","description":"function HTMLTrackElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":634}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTitleElement","value":{"type":"function","className":"Function","description":"function HTMLTitleElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":635}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTimeElement","value":{"type":"function","className":"Function","description":"function HTMLTimeElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":636}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTextAreaElement","value":{"type":"function","className":"Function","description":"function HTMLTextAreaElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":637}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTemplateElement","value":{"type":"function","className":"Function","description":"function HTMLTemplateElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":638}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTableSectionElement","value":{"type":"function","className":"Function","description":"function HTMLTableSectionElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":639}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTableRowElement","value":{"type":"function","className":"Function","description":"function HTMLTableRowElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":640}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTableElement","value":{"type":"function","className":"Function","description":"function HTMLTableElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":641}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTableColElement","value":{"type":"function","className":"Function","description":"function HTMLTableColElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":642}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTableCellElement","value":{"type":"function","className":"Function","description":"function HTMLTableCellElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":643}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLTableCaptionElement","value":{"type":"function","className":"Function","description":"function HTMLTableCaptionElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":644}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLStyleElement","value":{"type":"function","className":"Function","description":"function HTMLStyleElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":645}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLSpanElement","value":{"type":"function","className":"Function","description":"function HTMLSpanElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":646}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLSourceElement","value":{"type":"function","className":"Function","description":"function HTMLSourceElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":647}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLSlotElement","value":{"type":"function","className":"Function","description":"function HTMLSlotElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":648}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLShadowElement","value":{"type":"function","className":"Function","description":"function HTMLShadowElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":649}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLSelectElement","value":{"type":"function","className":"Function","description":"function HTMLSelectElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":650}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLScriptElement","value":{"type":"function","className":"Function","description":"function HTMLScriptElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":651}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLQuoteElement","value":{"type":"function","className":"Function","description":"function HTMLQuoteElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":652}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLProgressElement","value":{"type":"function","className":"Function","description":"function HTMLProgressElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":653}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLPreElement","value":{"type":"function","className":"Function","description":"function HTMLPreElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":654}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLPictureElement","value":{"type":"function","className":"Function","description":"function HTMLPictureElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":655}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLParamElement","value":{"type":"function","className":"Function","description":"function HTMLParamElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":656}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLParagraphElement","value":{"type":"function","className":"Function","description":"function HTMLParagraphElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":657}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLOutputElement","value":{"type":"function","className":"Function","description":"function HTMLOutputElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":658}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLOptionsCollection","value":{"type":"function","className":"Function","description":"function HTMLOptionsCollection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":659}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Option","value":{"type":"function","className":"Function","description":"function Option() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":660}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLOptionElement","value":{"type":"function","className":"Function","description":"function HTMLOptionElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":661}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLOptGroupElement","value":{"type":"function","className":"Function","description":"function HTMLOptGroupElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":662}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLObjectElement","value":{"type":"function","className":"Function","description":"function HTMLObjectElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":663}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLOListElement","value":{"type":"function","className":"Function","description":"function HTMLOListElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":664}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLModElement","value":{"type":"function","className":"Function","description":"function HTMLModElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":665}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLMeterElement","value":{"type":"function","className":"Function","description":"function HTMLMeterElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":666}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLMetaElement","value":{"type":"function","className":"Function","description":"function HTMLMetaElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":667}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLMenuElement","value":{"type":"function","className":"Function","description":"function HTMLMenuElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":668}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLMediaElement","value":{"type":"function","className":"Function","description":"function HTMLMediaElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":669}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLMarqueeElement","value":{"type":"function","className":"Function","description":"function HTMLMarqueeElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":670}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLMapElement","value":{"type":"function","className":"Function","description":"function HTMLMapElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":671}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLLinkElement","value":{"type":"function","className":"Function","description":"function HTMLLinkElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":672}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLLegendElement","value":{"type":"function","className":"Function","description":"function HTMLLegendElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":673}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLLabelElement","value":{"type":"function","className":"Function","description":"function HTMLLabelElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":674}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLLIElement","value":{"type":"function","className":"Function","description":"function HTMLLIElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":675}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLInputElement","value":{"type":"function","className":"Function","description":"function HTMLInputElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":676}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Image","value":{"type":"function","className":"Function","description":"function Image() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":677}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLImageElement","value":{"type":"function","className":"Function","description":"function HTMLImageElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":678}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLIFrameElement","value":{"type":"function","className":"Function","description":"function HTMLIFrameElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":679}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLHtmlElement","value":{"type":"function","className":"Function","description":"function HTMLHtmlElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":680}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLHeadingElement","value":{"type":"function","className":"Function","description":"function HTMLHeadingElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":681}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLHeadElement","value":{"type":"function","className":"Function","description":"function HTMLHeadElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":682}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLHRElement","value":{"type":"function","className":"Function","description":"function HTMLHRElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":683}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLFrameSetElement","value":{"type":"function","className":"Function","description":"function HTMLFrameSetElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":684}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLFrameElement","value":{"type":"function","className":"Function","description":"function HTMLFrameElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":685}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLFormElement","value":{"type":"function","className":"Function","description":"function HTMLFormElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":686}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLFormControlsCollection","value":{"type":"function","className":"Function","description":"function HTMLFormControlsCollection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":687}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLFontElement","value":{"type":"function","className":"Function","description":"function HTMLFontElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":688}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLFieldSetElement","value":{"type":"function","className":"Function","description":"function HTMLFieldSetElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":689}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLEmbedElement","value":{"type":"function","className":"Function","description":"function HTMLEmbedElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":690}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLElement","value":{"type":"function","className":"Function","description":"function HTMLElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":691}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDocument","value":{"type":"function","className":"Function","description":"function HTMLDocument() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":692}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDivElement","value":{"type":"function","className":"Function","description":"function HTMLDivElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":693}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDirectoryElement","value":{"type":"function","className":"Function","description":"function HTMLDirectoryElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":694}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDialogElement","value":{"type":"function","className":"Function","description":"function HTMLDialogElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":695}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDetailsElement","value":{"type":"function","className":"Function","description":"function HTMLDetailsElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":696}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDataListElement","value":{"type":"function","className":"Function","description":"function HTMLDataListElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":697}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDataElement","value":{"type":"function","className":"Function","description":"function HTMLDataElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":698}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLDListElement","value":{"type":"function","className":"Function","description":"function HTMLDListElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":699}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLContentElement","value":{"type":"function","className":"Function","description":"function HTMLContentElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":700}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLCollection","value":{"type":"function","className":"Function","description":"function HTMLCollection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":701}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLCanvasElement","value":{"type":"function","className":"Function","description":"function HTMLCanvasElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":702}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLButtonElement","value":{"type":"function","className":"Function","description":"function HTMLButtonElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":703}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLBodyElement","value":{"type":"function","className":"Function","description":"function HTMLBodyElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":704}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLBaseElement","value":{"type":"function","className":"Function","description":"function HTMLBaseElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":705}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLBRElement","value":{"type":"function","className":"Function","description":"function HTMLBRElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":706}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Audio","value":{"type":"function","className":"Function","description":"function Audio() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":707}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLAudioElement","value":{"type":"function","className":"Function","description":"function HTMLAudioElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":708}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLAreaElement","value":{"type":"function","className":"Function","description":"function HTMLAreaElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":709}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLAnchorElement","value":{"type":"function","className":"Function","description":"function HTMLAnchorElement() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":710}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"HTMLAllCollection","value":{"type":"function","className":"Function","description":"function HTMLAllCollection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":711}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FormData","value":{"type":"function","className":"Function","description":"function FormData() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":712}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FontFaceSetLoadEvent","value":{"type":"function","className":"Function","description":"function FontFaceSetLoadEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":713}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FontFace","value":{"type":"function","className":"Function","description":"function FontFace() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":714}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FocusEvent","value":{"type":"function","className":"Function","description":"function FocusEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":715}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FileReader","value":{"type":"function","className":"Function","description":"function FileReader() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":716}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FileList","value":{"type":"function","className":"Function","description":"function FileList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":717}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"File","value":{"type":"function","className":"Function","description":"function File() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":718}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"External","value":{"type":"function","className":"Function","description":"function External() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":719}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"EventTarget","value":{"type":"function","className":"Function","description":"function EventTarget() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":720}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Event","value":{"type":"function","className":"Function","description":"function Event() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":721}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ErrorEvent","value":{"type":"function","className":"Function","description":"function ErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":722}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Element","value":{"type":"function","className":"Function","description":"function Element() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":723}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DragEvent","value":{"type":"function","className":"Function","description":"function DragEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":724}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DocumentType","value":{"type":"function","className":"Function","description":"function DocumentType() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":725}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DocumentFragment","value":{"type":"function","className":"Function","description":"function DocumentFragment() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":726}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Document","value":{"type":"function","className":"Function","description":"function Document() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":727}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DataTransferItemList","value":{"type":"function","className":"Function","description":"function DataTransferItemList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":728}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DataTransferItem","value":{"type":"function","className":"Function","description":"function DataTransferItem() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":729}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DataTransfer","value":{"type":"function","className":"Function","description":"function DataTransfer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":730}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMTokenList","value":{"type":"function","className":"Function","description":"function DOMTokenList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":731}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMStringMap","value":{"type":"function","className":"Function","description":"function DOMStringMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":732}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMStringList","value":{"type":"function","className":"Function","description":"function DOMStringList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":733}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMRectReadOnly","value":{"type":"function","className":"Function","description":"function DOMRectReadOnly() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":734}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMRectList","value":{"type":"function","className":"Function","description":"function DOMRectList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":735}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMRect","value":{"type":"function","className":"Function","description":"function DOMRect() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":736}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMQuad","value":{"type":"function","className":"Function","description":"function DOMQuad() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":737}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMPointReadOnly","value":{"type":"function","className":"Function","description":"function DOMPointReadOnly() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":738}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMPoint","value":{"type":"function","className":"Function","description":"function DOMPoint() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":739}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMParser","value":{"type":"function","className":"Function","description":"function DOMParser() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":740}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMMatrixReadOnly","value":{"type":"function","className":"Function","description":"function DOMMatrixReadOnly() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":741}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMMatrix","value":{"type":"function","className":"Function","description":"function DOMMatrix() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":742}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMImplementation","value":{"type":"function","className":"Function","description":"function DOMImplementation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":743}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DOMException","value":{"type":"function","className":"Function","description":"function DOMException() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":744}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CustomEvent","value":{"type":"function","className":"Function","description":"function CustomEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":745}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CustomElementRegistry","value":{"type":"function","className":"Function","description":"function CustomElementRegistry() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":746}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CompositionEvent","value":{"type":"function","className":"Function","description":"function CompositionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":747}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Comment","value":{"type":"function","className":"Function","description":"function Comment() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":748}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ClipboardEvent","value":{"type":"function","className":"Function","description":"function ClipboardEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":749}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CharacterData","value":{"type":"function","className":"Function","description":"function CharacterData() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":750}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSVariableReferenceValue","value":{"type":"function","className":"Function","description":"function CSSVariableReferenceValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":751}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSUnparsedValue","value":{"type":"function","className":"Function","description":"function CSSUnparsedValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":752}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSUnitValue","value":{"type":"function","className":"Function","description":"function CSSUnitValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":753}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSTranslate","value":{"type":"function","className":"Function","description":"function CSSTranslate() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":754}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSTransformValue","value":{"type":"function","className":"Function","description":"function CSSTransformValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":755}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSTransformComponent","value":{"type":"function","className":"Function","description":"function CSSTransformComponent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":756}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSSupportsRule","value":{"type":"function","className":"Function","description":"function CSSSupportsRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":757}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSStyleValue","value":{"type":"function","className":"Function","description":"function CSSStyleValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":758}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSStyleSheet","value":{"type":"function","className":"Function","description":"function CSSStyleSheet() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":759}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSStyleRule","value":{"type":"function","className":"Function","description":"function CSSStyleRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":760}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSStyleDeclaration","value":{"type":"function","className":"Function","description":"function CSSStyleDeclaration() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":761}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSSkewY","value":{"type":"function","className":"Function","description":"function CSSSkewY() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":762}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSSkewX","value":{"type":"function","className":"Function","description":"function CSSSkewX() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":763}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSSkew","value":{"type":"function","className":"Function","description":"function CSSSkew() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":764}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSScale","value":{"type":"function","className":"Function","description":"function CSSScale() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":765}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSRuleList","value":{"type":"function","className":"Function","description":"function CSSRuleList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":766}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSRule","value":{"type":"function","className":"Function","description":"function CSSRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":767}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSRotate","value":{"type":"function","className":"Function","description":"function CSSRotate() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":768}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSPositionValue","value":{"type":"function","className":"Function","description":"function CSSPositionValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":769}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSPerspective","value":{"type":"function","className":"Function","description":"function CSSPerspective() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":770}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSPageRule","value":{"type":"function","className":"Function","description":"function CSSPageRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":771}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSNumericValue","value":{"type":"function","className":"Function","description":"function CSSNumericValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":772}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSNumericArray","value":{"type":"function","className":"Function","description":"function CSSNumericArray() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":773}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSNamespaceRule","value":{"type":"function","className":"Function","description":"function CSSNamespaceRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":774}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMediaRule","value":{"type":"function","className":"Function","description":"function CSSMediaRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":775}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMatrixComponent","value":{"type":"function","className":"Function","description":"function CSSMatrixComponent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":776}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathValue","value":{"type":"function","className":"Function","description":"function CSSMathValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":777}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathSum","value":{"type":"function","className":"Function","description":"function CSSMathSum() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":778}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathProduct","value":{"type":"function","className":"Function","description":"function CSSMathProduct() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":779}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathNegate","value":{"type":"function","className":"Function","description":"function CSSMathNegate() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":780}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathMin","value":{"type":"function","className":"Function","description":"function CSSMathMin() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":781}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathMax","value":{"type":"function","className":"Function","description":"function CSSMathMax() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":782}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSMathInvert","value":{"type":"function","className":"Function","description":"function CSSMathInvert() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":783}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSKeywordValue","value":{"type":"function","className":"Function","description":"function CSSKeywordValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":784}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSKeyframesRule","value":{"type":"function","className":"Function","description":"function CSSKeyframesRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":785}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSKeyframeRule","value":{"type":"function","className":"Function","description":"function CSSKeyframeRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":786}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSImportRule","value":{"type":"function","className":"Function","description":"function CSSImportRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":787}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSImageValue","value":{"type":"function","className":"Function","description":"function CSSImageValue() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":788}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSGroupingRule","value":{"type":"function","className":"Function","description":"function CSSGroupingRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":789}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSFontFaceRule","value":{"type":"function","className":"Function","description":"function CSSFontFaceRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":790}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSS","value":{"type":"function","className":"Function","description":"function CSS() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":791}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CSSConditionRule","value":{"type":"function","className":"Function","description":"function CSSConditionRule() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":792}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CDATASection","value":{"type":"function","className":"Function","description":"function CDATASection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":793}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Blob","value":{"type":"function","className":"Function","description":"function Blob() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":794}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BeforeUnloadEvent","value":{"type":"function","className":"Function","description":"function BeforeUnloadEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":795}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BarProp","value":{"type":"function","className":"Function","description":"function BarProp() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":796}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Attr","value":{"type":"function","className":"Function","description":"function Attr() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":797}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AnimationEvent","value":{"type":"function","className":"Function","description":"function AnimationEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":798}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AnimationEffect","value":{"type":"function","className":"Function","description":"function AnimationEffect() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":799}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Animation","value":{"type":"function","className":"Function","description":"function Animation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":800}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AbortSignal","value":{"type":"function","className":"Function","description":"function AbortSignal() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":801}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AbortController","value":{"type":"function","className":"Function","description":"function AbortController() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":802}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebKitCSSMatrix","value":{"type":"function","className":"Function","description":"function DOMMatrix() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":803}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebKitMutationObserver","value":{"type":"function","className":"Function","description":"function MutationObserver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":804}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitURL","value":{"type":"function","className":"Function","description":"function URL() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":805}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"event","value":{"type":"object","className":"KeyboardEvent","description":"KeyboardEvent","objectId":"{\"injectedScriptId\":1,\"id\":806}","preview":{"type":"object","description":"KeyboardEvent","overflow":true,"properties":[{"name":"isTrusted","type":"boolean","value":"true"},{"name":"key","type":"string","value":"ArrowDown"},{"name":"code","type":"string","value":"ArrowDown"},{"name":"location","type":"number","value":"0"},{"name":"ctrlKey","type":"boolean","value":"false"}]}},"writable":false,"configurable":true,"enumerable":false,"isOwn":true},{"name":"offscreenBuffering","value":{"type":"boolean","value":true},"writable":false,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SharedArrayBuffer","value":{"type":"function","className":"Function","description":"function SharedArrayBuffer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":807}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Atomics","value":{"type":"object","className":"Atomics","description":"Atomics","objectId":"{\"injectedScriptId\":1,\"id\":808}","preview":{"type":"object","description":"Atomics","overflow":true,"properties":[{"name":"load","type":"function","value":""},{"name":"store","type":"function","value":""},{"name":"add","type":"function","value":""},{"name":"sub","type":"function","value":""},{"name":"and","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WebAssembly","value":{"type":"object","className":"WebAssembly","description":"WebAssembly","objectId":"{\"injectedScriptId\":1,\"id\":809}","preview":{"type":"object","description":"WebAssembly","overflow":true,"properties":[{"name":"compile","type":"function","value":""},{"name":"validate","type":"function","value":""},{"name":"instantiate","type":"function","value":""},{"name":"compileStreaming","type":"function","value":""},{"name":"instantiateStreaming","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"LayoutShift","value":{"type":"function","className":"Function","description":"function LayoutShift() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":810}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PerformanceElementTiming","value":{"type":"function","className":"Function","description":"function PerformanceElementTiming() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":811}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ElementInternals","value":{"type":"function","className":"Function","description":"function ElementInternals() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":812}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FormDataEvent","value":{"type":"function","className":"Function","description":"function FormDataEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":813}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"LargestContentfulPaint","value":{"type":"function","className":"Function","description":"function LargestContentfulPaint() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":814}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SharedWorker","value":{"type":"function","className":"Function","description":"function SharedWorker() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":815}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ReadableStreamDefaultReader","value":{"type":"function","className":"Function","description":"function ReadableStreamDefaultReader() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":816}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"WritableStreamDefaultWriter","value":{"type":"function","className":"Function","description":"function WritableStreamDefaultWriter() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":817}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OffscreenCanvas","value":{"type":"function","className":"Function","description":"function OffscreenCanvas() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":818}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"UserActivation","value":{"type":"function","className":"Function","description":"function UserActivation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":819}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"XSLTProcessor","value":{"type":"function","className":"Function","description":"function XSLTProcessor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":820}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ClipboardItem","value":{"type":"function","className":"Function","description":"function ClipboardItem() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":821}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BackgroundFetchManager","value":{"type":"function","className":"Function","description":"function BackgroundFetchManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":822}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BackgroundFetchRecord","value":{"type":"function","className":"Function","description":"function BackgroundFetchRecord() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":823}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BackgroundFetchRegistration","value":{"type":"function","className":"Function","description":"function BackgroundFetchRegistration() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":824}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaMetadata","value":{"type":"function","className":"Function","description":"function MediaMetadata() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":825}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaSession","value":{"type":"function","className":"Function","description":"function MediaSession() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":826}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaSource","value":{"type":"function","className":"Function","description":"function MediaSource() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":827}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Notification","value":{"type":"function","className":"Function","description":"function Notification() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":828}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentInstruments","value":{"type":"function","className":"Function","description":"function PaymentInstruments() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":829}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentManager","value":{"type":"function","className":"Function","description":"function PaymentManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":830}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentRequestUpdateEvent","value":{"type":"function","className":"Function","description":"function PaymentRequestUpdateEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":831}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Permissions","value":{"type":"function","className":"Function","description":"function Permissions() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":832}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PermissionStatus","value":{"type":"function","className":"Function","description":"function PermissionStatus() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":833}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"EnterPictureInPictureEvent","value":{"type":"function","className":"Function","description":"function EnterPictureInPictureEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":834}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PictureInPictureWindow","value":{"type":"function","className":"Function","description":"function PictureInPictureWindow() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":835}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PushManager","value":{"type":"function","className":"Function","description":"function PushManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":836}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PushSubscription","value":{"type":"function","className":"Function","description":"function PushSubscription() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":837}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PushSubscriptionOptions","value":{"type":"function","className":"Function","description":"function PushSubscriptionOptions() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":838}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCDtlsTransport","value":{"type":"function","className":"Function","description":"function RTCDtlsTransport() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":839}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCSctpTransport","value":{"type":"function","className":"Function","description":"function RTCSctpTransport() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":840}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RemotePlayback","value":{"type":"function","className":"Function","description":"function RemotePlayback() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":841}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitSpeechGrammar","value":{"type":"function","className":"Function","description":"function SpeechGrammar() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":842}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitSpeechGrammarList","value":{"type":"function","className":"Function","description":"function SpeechGrammarList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":843}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitSpeechRecognition","value":{"type":"function","className":"Function","description":"function SpeechRecognition() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":844}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitSpeechRecognitionError","value":{"type":"function","className":"Function","description":"function SpeechRecognitionErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":845}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"webkitSpeechRecognitionEvent","value":{"type":"function","className":"Function","description":"function SpeechRecognitionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":846}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SpeechSynthesisErrorEvent","value":{"type":"function","className":"Function","description":"function SpeechSynthesisErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":847}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SpeechSynthesisEvent","value":{"type":"function","className":"Function","description":"function SpeechSynthesisEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":848}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SpeechSynthesisUtterance","value":{"type":"function","className":"Function","description":"function SpeechSynthesisUtterance() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":849}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OffscreenCanvasRenderingContext2D","value":{"type":"function","className":"Function","description":"function OffscreenCanvasRenderingContext2D() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":850}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothUUID","value":{"type":"function","className":"Function","description":"function BluetoothUUID() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":851}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Worklet","value":{"type":"function","className":"Function","description":"function Worklet() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":852}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ApplicationCache","value":{"type":"function","className":"Function","description":"function ApplicationCache() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":853}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ApplicationCacheErrorEvent","value":{"type":"function","className":"Function","description":"function ApplicationCacheErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":854}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AbsoluteOrientationSensor","value":{"type":"function","className":"Function","description":"function AbsoluteOrientationSensor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":855}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Accelerometer","value":{"type":"function","className":"Function","description":"function Accelerometer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":856}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AudioWorklet","value":{"type":"function","className":"Function","description":"function AudioWorklet() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":857}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Cache","value":{"type":"function","className":"Function","description":"function Cache() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":858}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CacheStorage","value":{"type":"function","className":"Function","description":"function CacheStorage() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":859}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Clipboard","value":{"type":"function","className":"Function","description":"function Clipboard() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":860}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Credential","value":{"type":"function","className":"Function","description":"function Credential() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":861}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"CredentialsContainer","value":{"type":"function","className":"Function","description":"function CredentialsContainer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":862}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DeviceMotionEvent","value":{"type":"function","className":"Function","description":"function DeviceMotionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":863}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DeviceMotionEventAcceleration","value":{"type":"function","className":"Function","description":"function DeviceMotionEventAcceleration() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":864}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DeviceMotionEventRotationRate","value":{"type":"function","className":"Function","description":"function DeviceMotionEventRotationRate() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":865}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"DeviceOrientationEvent","value":{"type":"function","className":"Function","description":"function DeviceOrientationEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":866}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"FederatedCredential","value":{"type":"function","className":"Function","description":"function FederatedCredential() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":867}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Gyroscope","value":{"type":"function","className":"Function","description":"function Gyroscope() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":868}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Keyboard","value":{"type":"function","className":"Function","description":"function Keyboard() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":869}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"KeyboardLayoutMap","value":{"type":"function","className":"Function","description":"function KeyboardLayoutMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":870}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"LinearAccelerationSensor","value":{"type":"function","className":"Function","description":"function LinearAccelerationSensor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":871}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Lock","value":{"type":"function","className":"Function","description":"function Lock() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":872}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"LockManager","value":{"type":"function","className":"Function","description":"function LockManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":873}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaDeviceInfo","value":{"type":"function","className":"Function","description":"function MediaDeviceInfo() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":874}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaDevices","value":{"type":"function","className":"Function","description":"function MediaDevices() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":875}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaKeyMessageEvent","value":{"type":"function","className":"Function","description":"function MediaKeyMessageEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":876}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaKeys","value":{"type":"function","className":"Function","description":"function MediaKeys() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":877}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaKeySession","value":{"type":"function","className":"Function","description":"function MediaKeySession() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":878}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaKeyStatusMap","value":{"type":"function","className":"Function","description":"function MediaKeyStatusMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":879}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MediaKeySystemAccess","value":{"type":"function","className":"Function","description":"function MediaKeySystemAccess() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":880}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIAccess","value":{"type":"function","className":"Function","description":"function MIDIAccess() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":881}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIConnectionEvent","value":{"type":"function","className":"Function","description":"function MIDIConnectionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":882}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIInput","value":{"type":"function","className":"Function","description":"function MIDIInput() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":883}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIInputMap","value":{"type":"function","className":"Function","description":"function MIDIInputMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":884}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIMessageEvent","value":{"type":"function","className":"Function","description":"function MIDIMessageEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":885}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIOutput","value":{"type":"function","className":"Function","description":"function MIDIOutput() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":886}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIOutputMap","value":{"type":"function","className":"Function","description":"function MIDIOutputMap() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":887}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"MIDIPort","value":{"type":"function","className":"Function","description":"function MIDIPort() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":888}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"NavigationPreloadManager","value":{"type":"function","className":"Function","description":"function NavigationPreloadManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":889}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"OrientationSensor","value":{"type":"function","className":"Function","description":"function OrientationSensor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":890}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PasswordCredential","value":{"type":"function","className":"Function","description":"function PasswordCredential() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":891}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RelativeOrientationSensor","value":{"type":"function","className":"Function","description":"function RelativeOrientationSensor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":892}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"RTCIceTransport","value":{"type":"function","className":"Function","description":"function RTCIceTransport() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":893}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Sensor","value":{"type":"function","className":"Function","description":"function Sensor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":894}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"SensorErrorEvent","value":{"type":"function","className":"Function","description":"function SensorErrorEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":895}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ServiceWorker","value":{"type":"function","className":"Function","description":"function ServiceWorker() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":896}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ServiceWorkerContainer","value":{"type":"function","className":"Function","description":"function ServiceWorkerContainer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":897}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"ServiceWorkerRegistration","value":{"type":"function","className":"Function","description":"function ServiceWorkerRegistration() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":898}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"StorageManager","value":{"type":"function","className":"Function","description":"function StorageManager() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":899}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentMethodChangeEvent","value":{"type":"function","className":"Function","description":"function PaymentMethodChangeEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":900}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentAddress","value":{"type":"function","className":"Function","description":"function PaymentAddress() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":901}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentRequest","value":{"type":"function","className":"Function","description":"function PaymentRequest() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":902}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PaymentResponse","value":{"type":"function","className":"Function","description":"function PaymentResponse() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":903}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Presentation","value":{"type":"function","className":"Function","description":"function Presentation() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":904}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationAvailability","value":{"type":"function","className":"Function","description":"function PresentationAvailability() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":905}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationConnection","value":{"type":"function","className":"Function","description":"function PresentationConnection() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":906}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationConnectionAvailableEvent","value":{"type":"function","className":"Function","description":"function PresentationConnectionAvailableEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":907}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationConnectionCloseEvent","value":{"type":"function","className":"Function","description":"function PresentationConnectionCloseEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":908}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationConnectionList","value":{"type":"function","className":"Function","description":"function PresentationConnectionList() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":909}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationReceiver","value":{"type":"function","className":"Function","description":"function PresentationReceiver() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":910}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PresentationRequest","value":{"type":"function","className":"Function","description":"function PresentationRequest() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":911}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AuthenticatorAssertionResponse","value":{"type":"function","className":"Function","description":"function AuthenticatorAssertionResponse() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":912}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AuthenticatorAttestationResponse","value":{"type":"function","className":"Function","description":"function AuthenticatorAttestationResponse() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":913}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"AuthenticatorResponse","value":{"type":"function","className":"Function","description":"function AuthenticatorResponse() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":914}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"PublicKeyCredential","value":{"type":"function","className":"Function","description":"function PublicKeyCredential() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":915}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"Bluetooth","value":{"type":"function","className":"Function","description":"function Bluetooth() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":916}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothCharacteristicProperties","value":{"type":"function","className":"Function","description":"function BluetoothCharacteristicProperties() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":917}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothDevice","value":{"type":"function","className":"Function","description":"function BluetoothDevice() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":918}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothRemoteGATTCharacteristic","value":{"type":"function","className":"Function","description":"function BluetoothRemoteGATTCharacteristic() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":919}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothRemoteGATTDescriptor","value":{"type":"function","className":"Function","description":"function BluetoothRemoteGATTDescriptor() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":920}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothRemoteGATTServer","value":{"type":"function","className":"Function","description":"function BluetoothRemoteGATTServer() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":921}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"BluetoothRemoteGATTService","value":{"type":"function","className":"Function","description":"function BluetoothRemoteGATTService() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":922}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USB","value":{"type":"function","className":"Function","description":"function USB() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":923}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBAlternateInterface","value":{"type":"function","className":"Function","description":"function USBAlternateInterface() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":924}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBConfiguration","value":{"type":"function","className":"Function","description":"function USBConfiguration() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":925}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBConnectionEvent","value":{"type":"function","className":"Function","description":"function USBConnectionEvent() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":926}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBDevice","value":{"type":"function","className":"Function","description":"function USBDevice() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":927}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBEndpoint","value":{"type":"function","className":"Function","description":"function USBEndpoint() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":928}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBInterface","value":{"type":"function","className":"Function","description":"function USBInterface() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":929}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBInTransferResult","value":{"type":"function","className":"Function","description":"function USBInTransferResult() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":930}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBIsochronousInTransferPacket","value":{"type":"function","className":"Function","description":"function USBIsochronousInTransferPacket() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":931}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBIsochronousInTransferResult","value":{"type":"function","className":"Function","description":"function USBIsochronousInTransferResult() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":932}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBIsochronousOutTransferPacket","value":{"type":"function","className":"Function","description":"function USBIsochronousOutTransferPacket() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":933}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBIsochronousOutTransferResult","value":{"type":"function","className":"Function","description":"function USBIsochronousOutTransferResult() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":934}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"USBOutTransferResult","value":{"type":"function","className":"Function","description":"function USBOutTransferResult() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":935}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"process","get":{"type":"function","className":"Function","description":"get() {\n return _process;\n }","objectId":"{\"injectedScriptId\":1,\"id\":936}"},"set":{"type":"function","className":"Function","description":"set(value) {\n _process = value;\n }","objectId":"{\"injectedScriptId\":1,\"id\":937}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"GLOBAL","get":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":938}"},"set":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":939}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"root","get":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":940}"},"set":{"type":"function","className":"Function","description":"function deprecated(...args) {\n if (!warned) {\n warned = true;\n if (code !== undefined) {\n if (!codesWarned.has(code)) {\n process.emitWarning(msg, 'DeprecationWarning', code, deprecated);\n codesWarned.add(code);\n }\n } else {\n process.emitWarning(msg, 'DeprecationWarning', deprecated);\n }\n }\n if (new.target) {\n return Reflect.construct(fn, args, new.target);\n }\n return fn.apply(this, args);\n }","objectId":"{\"injectedScriptId\":1,\"id\":941}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"Buffer","get":{"type":"function","className":"Function","description":"get() {\n return _Buffer;\n }","objectId":"{\"injectedScriptId\":1,\"id\":942}"},"set":{"type":"function","className":"Function","description":"set(value) {\n _Buffer = value;\n }","objectId":"{\"injectedScriptId\":1,\"id\":943}"},"configurable":true,"enumerable":false,"isOwn":true},{"name":"Symbol(Symbol.toStringTag)","value":{"type":"string","value":"global"},"writable":false,"configurable":true,"enumerable":false,"isOwn":true,"symbol":{"type":"symbol","description":"Symbol(Symbol.toStringTag)","objectId":"{\"injectedScriptId\":1,\"id\":944}"}},{"name":"Symbol(graceful-fs.queue)","get":{"type":"function","className":"Function","description":"function() {\n return queue\n }","objectId":"{\"injectedScriptId\":1,\"id\":945}"},"set":{"type":"undefined"},"configurable":false,"enumerable":false,"isOwn":true,"symbol":{"type":"symbol","description":"Symbol(graceful-fs.queue)","objectId":"{\"injectedScriptId\":1,\"id\":946}"}},{"name":"__proto__","value":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":947}","preview":{"type":"object","description":"global","overflow":true,"properties":[{"name":"postMessage","type":"accessor"},{"name":"blur","type":"accessor"},{"name":"focus","type":"accessor"},{"name":"close","type":"accessor"},{"name":"parent","type":"accessor"}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425897793,"metadata":{"connectionId":1,"message":{"seq":3445,"type":"response","request_seq":51,"command":"completions","success":true,"body":{"targets":[{"label":"__proto__","type":"property"},{"label":"XSLTProcessor","type":"property"},{"label":"XPathResult","type":"property"},{"label":"XPathExpression","type":"property"},{"label":"XPathEvaluator","type":"property"},{"label":"XMLSerializer","type":"property"},{"label":"XMLHttpRequestUpload","type":"property"},{"label":"XMLHttpRequestEventTarget","type":"property"},{"label":"XMLHttpRequest","type":"property"},{"label":"XMLDocument","type":"property"},{"label":"WritableStreamDefaultWriter","type":"property"},{"label":"WritableStream","type":"property"},{"label":"Worklet","type":"property"},{"label":"Worker","type":"property"},{"label":"Window","type":"property"},{"label":"window","type":"property"},{"label":"WheelEvent","type":"property"},{"label":"WebView","type":"property"},{"label":"WebSocket","type":"property"},{"label":"webkitURL","type":"property"},{"label":"webkitStorageInfo","type":"property"},{"label":"webkitSpeechRecognitionEvent","type":"property"},{"label":"webkitSpeechRecognitionError","type":"property"},{"label":"webkitSpeechRecognition","type":"property"},{"label":"webkitSpeechGrammarList","type":"property"},{"label":"webkitSpeechGrammar","type":"property"},{"label":"webkitRTCPeerConnection","type":"property"},{"label":"webkitResolveLocalFileSystemURL","type":"property"},{"label":"webkitRequestFileSystem","type":"property"},{"label":"webkitRequestAnimationFrame","type":"property"},{"label":"WebKitMutationObserver","type":"property"},{"label":"webkitMediaStream","type":"property"},{"label":"WebKitCSSMatrix","type":"property"},{"label":"webkitCancelAnimationFrame","type":"property"},{"label":"WebGLVertexArrayObject","type":"property"},{"label":"WebGLUniformLocation","type":"property"},{"label":"WebGLTransformFeedback","type":"property"},{"label":"WebGLTexture","type":"property"},{"label":"WebGLSync","type":"property"},{"label":"WebGLShaderPrecisionFormat","type":"property"},{"label":"WebGLShader","type":"property"},{"label":"WebGLSampler","type":"property"},{"label":"WebGLRenderingContext","type":"property"},{"label":"WebGLRenderbuffer","type":"property"},{"label":"WebGLQuery","type":"property"},{"label":"WebGLProgram","type":"property"},{"label":"WebGLFramebuffer","type":"property"},{"label":"WebGLContextEvent","type":"property"},{"label":"WebGLBuffer","type":"property"},{"label":"WebGLActiveInfo","type":"property"},{"label":"WebGL2RenderingContext","type":"property"},{"label":"WebAssembly","type":"property"},{"label":"WeakSet","type":"property"},{"label":"WeakMap","type":"property"},{"label":"WaveShaperNode","type":"property"},{"label":"VTTCue","type":"property"},{"label":"VisualViewport","type":"property"},{"label":"visualViewport","type":"property"},{"label":"ValidityState","type":"property"},{"label":"UserActivation","type":"property"},{"label":"USBOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferPacket","type":"property"},{"label":"USBIsochronousInTransferResult","type":"property"},{"label":"USBIsochronousInTransferPacket","type":"property"},{"label":"USBInTransferResult","type":"property"},{"label":"USBInterface","type":"property"},{"label":"USBEndpoint","type":"property"},{"label":"USBDevice","type":"property"},{"label":"USBConnectionEvent","type":"property"},{"label":"USBConfiguration","type":"property"},{"label":"USBAlternateInterface","type":"property"},{"label":"USB","type":"property"},{"label":"URLSearchParams","type":"property"},{"label":"URL","type":"property"},{"label":"URIError","type":"property"},{"label":"unescape","type":"property"},{"label":"undefined","type":"property"},{"label":"Uint8ClampedArray","type":"property"},{"label":"Uint8Array","type":"property"},{"label":"Uint32Array","type":"property"},{"label":"Uint16Array","type":"property"},{"label":"UIEvent","type":"property"},{"label":"TypeError","type":"property"},{"label":"TreeWalker","type":"property"},{"label":"TransitionEvent","type":"property"},{"label":"TransformStream","type":"property"},{"label":"TrackEvent","type":"property"},{"label":"TouchList","type":"property"},{"label":"TouchEvent","type":"property"},{"label":"Touch","type":"property"},{"label":"top","type":"property"},{"label":"toolbar","type":"property"},{"label":"TimeRanges","type":"property"},{"label":"TextTrackList","type":"property"},{"label":"TextTrackCueList","type":"property"},{"label":"TextTrackCue","type":"property"},{"label":"TextTrack","type":"property"},{"label":"TextMetrics","type":"property"},{"label":"TextEvent","type":"property"},{"label":"TextEncoderStream","type":"property"},{"label":"TextEncoder","type":"property"},{"label":"TextDecoderStream","type":"property"},{"label":"TextDecoder","type":"property"},{"label":"Text","type":"property"},{"label":"TaskAttributionTiming","type":"property"},{"label":"SyntaxError","type":"property"},{"label":"SyncManager","type":"property"},{"label":"Symbol(Symbol.toStringTag)","type":"property"},{"label":"get Symbol(graceful-fs.queue)","type":"property"},{"label":"Symbol","type":"property"},{"label":"SVGViewElement","type":"property"},{"label":"SVGUseElement","type":"property"},{"label":"SVGUnitTypes","type":"property"},{"label":"SVGTSpanElement","type":"property"},{"label":"SVGTransformList","type":"property"},{"label":"SVGTransform","type":"property"},{"label":"SVGTitleElement","type":"property"},{"label":"SVGTextPositioningElement","type":"property"},{"label":"SVGTextPathElement","type":"property"},{"label":"SVGTextElement","type":"property"},{"label":"SVGTextContentElement","type":"property"},{"label":"SVGSymbolElement","type":"property"},{"label":"SVGSwitchElement","type":"property"},{"label":"SVGSVGElement","type":"property"},{"label":"SVGStyleElement","type":"property"},{"label":"SVGStringList","type":"property"},{"label":"SVGStopElement","type":"property"},{"label":"SVGSetElement","type":"property"},{"label":"SVGScriptElement","type":"property"},{"label":"SVGRectElement","type":"property"},{"label":"SVGRect","type":"property"},{"label":"SVGRadialGradientElement","type":"property"},{"label":"SVGPreserveAspectRatio","type":"property"},{"label":"SVGPolylineElement","type":"property"},{"label":"SVGPolygonElement","type":"property"},{"label":"SVGPointList","type":"property"},{"label":"SVGPoint","type":"property"},{"label":"SVGPatternElement","type":"property"},{"label":"SVGPathElement","type":"property"},{"label":"SVGNumberList","type":"property"},{"label":"SVGNumber","type":"property"},{"label":"SVGMPathElement","type":"property"},{"label":"SVGMetadataElement","type":"property"},{"label":"SVGMatrix","type":"property"},{"label":"SVGMaskElement","type":"property"},{"label":"SVGMarkerElement","type":"property"},{"label":"SVGLineElement","type":"property"},{"label":"SVGLinearGradientElement","type":"property"},{"label":"SVGLengthList","type":"property"},{"label":"SVGLength","type":"property"},{"label":"SVGImageElement","type":"property"},{"label":"SVGGraphicsElement","type":"property"},{"label":"SVGGradientElement","type":"property"},{"label":"SVGGeometryElement","type":"property"},{"label":"SVGGElement","type":"property"},{"label":"SVGForeignObjectElement","type":"property"},{"label":"SVGFilterElement","type":"property"},{"label":"SVGFETurbulenceElement","type":"property"},{"label":"SVGFETileElement","type":"property"},{"label":"SVGFESpotLightElement","type":"property"},{"label":"SVGFESpecularLightingElement","type":"property"},{"label":"SVGFEPointLightElement","type":"property"},{"label":"SVGFEOffsetElement","type":"property"},{"label":"SVGFEMorphologyElement","type":"property"},{"label":"SVGFEMergeNodeElement","type":"property"},{"label":"SVGFEMergeElement","type":"property"},{"label":"SVGFEImageElement","type":"property"},{"label":"SVGFEGaussianBlurElement","type":"property"},{"label":"SVGFEFuncRElement","type":"property"},{"label":"SVGFEFuncGElement","type":"property"},{"label":"SVGFEFuncBElement","type":"property"},{"label":"SVGFEFuncAElement","type":"property"},{"label":"SVGFEFloodElement","type":"property"},{"label":"SVGFEDropShadowElement","type":"property"},{"label":"SVGFEDistantLightElement","type":"property"},{"label":"SVGFEDisplacementMapElement","type":"property"},{"label":"SVGFEDiffuseLightingElement","type":"property"},{"label":"SVGFEConvolveMatrixElement","type":"property"},{"label":"SVGFECompositeElement","type":"property"},{"label":"SVGFEComponentTransferElement","type":"property"},{"label":"SVGFEColorMatrixElement","type":"property"},{"label":"SVGFEBlendElement","type":"property"},{"label":"SVGEllipseElement","type":"property"},{"label":"SVGElement","type":"property"},{"label":"SVGDiscardElement","type":"property"},{"label":"SVGDescElement","type":"property"},{"label":"SVGDefsElement","type":"property"},{"label":"SVGComponentTransferFunctionElement","type":"property"},{"label":"SVGClipPathElement","type":"property"},{"label":"SVGCircleElement","type":"property"},{"label":"SVGAnimationElement","type":"property"},{"label":"SVGAnimateTransformElement","type":"property"},{"label":"SVGAnimateMotionElement","type":"property"},{"label":"SVGAnimateElement","type":"property"},{"label":"SVGAnimatedTransformList","type":"property"},{"label":"SVGAnimatedString","type":"property"},{"label":"SVGAnimatedRect","type":"property"},{"label":"SVGAnimatedPreserveAspectRatio","type":"property"},{"label":"SVGAnimatedNumberList","type":"property"},{"label":"SVGAnimatedNumber","type":"property"},{"label":"SVGAnimatedLengthList","type":"property"},{"label":"SVGAnimatedLength","type":"property"},{"label":"SVGAnimatedInteger","type":"property"},{"label":"SVGAnimatedEnumeration","type":"property"},{"label":"SVGAnimatedBoolean","type":"property"},{"label":"SVGAnimatedAngle","type":"property"},{"label":"SVGAngle","type":"property"},{"label":"SVGAElement","type":"property"},{"label":"SubtleCrypto","type":"property"},{"label":"StyleSheetList","type":"property"},{"label":"StyleSheet","type":"property"},{"label":"StylePropertyMapReadOnly","type":"property"},{"label":"StylePropertyMap","type":"property"},{"label":"styleMedia","type":"property"},{"label":"String","type":"property"},{"label":"StorageManager","type":"property"},{"label":"StorageEvent","type":"property"},{"label":"Storage","type":"property"},{"label":"stop","type":"property"},{"label":"StereoPannerNode","type":"property"},{"label":"statusbar","type":"property"},{"label":"status","type":"property"},{"label":"StaticRange","type":"property"},{"label":"SpeechSynthesisUtterance","type":"property"},{"label":"SpeechSynthesisEvent","type":"property"},{"label":"SpeechSynthesisErrorEvent","type":"property"},{"label":"speechSynthesis","type":"property"},{"label":"SourceBufferList","type":"property"},{"label":"SourceBuffer","type":"property"},{"label":"showPartsSplash","type":"property"},{"label":"SharedWorker","type":"property"},{"label":"SharedArrayBuffer","type":"property"},{"label":"ShadowRoot","type":"property"},{"label":"setTimeout","type":"property"},{"label":"setInterval","type":"property"},{"label":"setImmediate","type":"property"},{"label":"Set","type":"property"},{"label":"sessionStorage","type":"property"},{"label":"ServiceWorkerRegistration","type":"property"},{"label":"ServiceWorkerContainer","type":"property"},{"label":"ServiceWorker","type":"property"},{"label":"SensorErrorEvent","type":"property"},{"label":"Sensor","type":"property"},{"label":"self","type":"property"},{"label":"Selection","type":"property"},{"label":"SecurityPolicyViolationEvent","type":"property"},{"label":"scrollY","type":"property"},{"label":"scrollX","type":"property"},{"label":"scrollTo","type":"property"},{"label":"scrollBy","type":"property"},{"label":"scrollbars","type":"property"},{"label":"scroll","type":"property"},{"label":"ScriptProcessorNode","type":"property"},{"label":"screenY","type":"property"},{"label":"screenX","type":"property"},{"label":"screenTop","type":"property"},{"label":"ScreenOrientation","type":"property"},{"label":"screenLeft","type":"property"},{"label":"Screen","type":"property"},{"label":"screen","type":"property"},{"label":"RTCTrackEvent","type":"property"},{"label":"RTCStatsReport","type":"property"},{"label":"RTCSessionDescription","type":"property"},{"label":"RTCSctpTransport","type":"property"},{"label":"RTCRtpTransceiver","type":"property"},{"label":"RTCRtpSender","type":"property"},{"label":"RTCRtpReceiver","type":"property"},{"label":"RTCPeerConnectionIceEvent","type":"property"},{"label":"RTCPeerConnectionIceErrorEvent","type":"property"},{"label":"RTCPeerConnection","type":"property"},{"label":"RTCIceTransport","type":"property"},{"label":"RTCIceCandidate","type":"property"},{"label":"RTCErrorEvent","type":"property"},{"label":"RTCError","type":"property"},{"label":"RTCDTMFToneChangeEvent","type":"property"},{"label":"RTCDTMFSender","type":"property"},{"label":"RTCDtlsTransport","type":"property"},{"label":"RTCDataChannelEvent","type":"property"},{"label":"RTCDataChannel","type":"property"},{"label":"RTCCertificate","type":"property"},{"label":"set root","type":"property"},{"label":"get root","type":"property"},{"label":"Response","type":"property"},{"label":"resizeTo","type":"property"},{"label":"ResizeObserverEntry","type":"property"},{"label":"ResizeObserver","type":"property"},{"label":"resizeBy","type":"property"},{"label":"require","type":"property"},{"label":"requestIdleCallback","type":"property"},{"label":"requestAnimationFrame","type":"property"},{"label":"Request","type":"property"},{"label":"ReportingObserver","type":"property"},{"label":"RemotePlayback","type":"property"},{"label":"releaseEvents","type":"property"},{"label":"RelativeOrientationSensor","type":"property"},{"label":"RegExp","type":"property"},{"label":"Reflect","type":"property"},{"label":"ReferenceError","type":"property"},{"label":"ReadableStreamDefaultReader","type":"property"},{"label":"ReadableStream","type":"property"},{"label":"RangeError","type":"property"},{"label":"Range","type":"property"},{"label":"RadioNodeList","type":"property"},{"label":"queueMicrotask","type":"property"},{"label":"PushSubscriptionOptions","type":"property"},{"label":"PushSubscription","type":"property"},{"label":"PushManager","type":"property"},{"label":"PublicKeyCredential","type":"property"},{"label":"Proxy","type":"property"},{"label":"prompt","type":"property"},{"label":"PromiseRejectionEvent","type":"property"},{"label":"Promise","type":"property"},{"label":"ProgressEvent","type":"property"},{"label":"ProcessingInstruction","type":"property"},{"label":"set process","type":"property"},{"label":"get process","type":"property"},{"label":"print","type":"property"},{"label":"PresentationRequest","type":"property"},{"label":"PresentationReceiver","type":"property"},{"label":"PresentationConnectionList","type":"property"},{"label":"PresentationConnectionCloseEvent","type":"property"},{"label":"PresentationConnectionAvailableEvent","type":"property"},{"label":"PresentationConnection","type":"property"},{"label":"PresentationAvailability","type":"property"},{"label":"Presentation","type":"property"},{"label":"postMessage","type":"property"},{"label":"PopStateEvent","type":"property"},{"label":"PointerEvent","type":"property"},{"label":"PluginArray","type":"property"},{"label":"Plugin","type":"property"},{"label":"PictureInPictureWindow","type":"property"},{"label":"PhotoCapabilities","type":"property"},{"label":"personalbar","type":"property"},{"label":"PermissionStatus","type":"property"},{"label":"Permissions","type":"property"},{"label":"PeriodicWave","type":"property"},{"label":"PerformanceTiming","type":"property"},{"label":"PerformanceServerTiming","type":"property"},{"label":"PerformanceResourceTiming","type":"property"},{"label":"PerformancePaintTiming","type":"property"},{"label":"PerformanceObserverEntryList","type":"property"},{"label":"PerformanceObserver","type":"property"},{"label":"PerformanceNavigationTiming","type":"property"},{"label":"PerformanceNavigation","type":"property"},{"label":"PerformanceMeasure","type":"property"},{"label":"PerformanceMark","type":"property"},{"label":"PerformanceLongTaskTiming","type":"property"},{"label":"PerformanceEventTiming","type":"property"},{"label":"PerformanceEntry","type":"property"},{"label":"PerformanceElementTiming","type":"property"},{"label":"Performance","type":"property"},{"label":"performance","type":"property"},{"label":"PaymentResponse","type":"property"},{"label":"PaymentRequestUpdateEvent","type":"property"},{"label":"PaymentRequest","type":"property"},{"label":"PaymentMethodChangeEvent","type":"property"},{"label":"PaymentManager","type":"property"},{"label":"PaymentInstruments","type":"property"},{"label":"PaymentAddress","type":"property"},{"label":"Path2D","type":"property"},{"label":"PasswordCredential","type":"property"},{"label":"parseInt","type":"property"},{"label":"parseFloat","type":"property"},{"label":"parent","type":"property"},{"label":"PannerNode","type":"property"},{"label":"pageYOffset","type":"property"},{"label":"pageXOffset","type":"property"},{"label":"PageTransitionEvent","type":"property"},{"label":"OverconstrainedError","type":"property"},{"label":"outerWidth","type":"property"},{"label":"outerHeight","type":"property"},{"label":"OscillatorNode","type":"property"},{"label":"origin","type":"property"},{"label":"OrientationSensor","type":"property"},{"label":"Option","type":"property"},{"label":"opener","type":"property"},{"label":"openDatabase","type":"property"},{"label":"open","type":"property"},{"label":"onwheel","type":"property"},{"label":"onwebkittransitionend","type":"property"},{"label":"onwebkitanimationstart","type":"property"},{"label":"onwebkitanimationiteration","type":"property"},{"label":"onwebkitanimationend","type":"property"},{"label":"onwaiting","type":"property"},{"label":"onvolumechange","type":"property"},{"label":"onunload","type":"property"},{"label":"onunhandledrejection","type":"property"},{"label":"ontransitionend","type":"property"},{"label":"ontoggle","type":"property"},{"label":"ontimeupdate","type":"property"},{"label":"onsuspend","type":"property"},{"label":"onsubmit","type":"property"},{"label":"onstorage","type":"property"},{"label":"onstalled","type":"property"},{"label":"onselectstart","type":"property"},{"label":"onselectionchange","type":"property"},{"label":"onselect","type":"property"},{"label":"onseeking","type":"property"},{"label":"onseeked","type":"property"},{"label":"onsearch","type":"property"},{"label":"onscroll","type":"property"},{"label":"onresize","type":"property"},{"label":"onreset","type":"property"},{"label":"onrejectionhandled","type":"property"},{"label":"onratechange","type":"property"},{"label":"onprogress","type":"property"},{"label":"onpopstate","type":"property"},{"label":"onpointerup","type":"property"},{"label":"onpointerrawupdate","type":"property"},{"label":"onpointerover","type":"property"},{"label":"onpointerout","type":"property"},{"label":"onpointermove","type":"property"},{"label":"onpointerleave","type":"property"},{"label":"onpointerenter","type":"property"},{"label":"onpointerdown","type":"property"},{"label":"onpointercancel","type":"property"},{"label":"onplaying","type":"property"},{"label":"onplay","type":"property"},{"label":"onpause","type":"property"},{"label":"onpageshow","type":"property"},{"label":"onpagehide","type":"property"},{"label":"ononline","type":"property"},{"label":"onoffline","type":"property"},{"label":"onmousewheel","type":"property"},{"label":"onmouseup","type":"property"},{"label":"onmouseover","type":"property"},{"label":"onmouseout","type":"property"},{"label":"onmousemove","type":"property"},{"label":"onmouseleave","type":"property"},{"label":"onmouseenter","type":"property"},{"label":"onmousedown","type":"property"},{"label":"onmessageerror","type":"property"},{"label":"onmessage","type":"property"},{"label":"onlostpointercapture","type":"property"},{"label":"onloadstart","type":"property"},{"label":"onloadedmetadata","type":"property"},{"label":"onloadeddata","type":"property"},{"label":"onload","type":"property"},{"label":"onlanguagechange","type":"property"},{"label":"onkeyup","type":"property"},{"label":"onkeypress","type":"property"},{"label":"onkeydown","type":"property"},{"label":"oninvalid","type":"property"},{"label":"oninput","type":"property"},{"label":"onhashchange","type":"property"},{"label":"ongotpointercapture","type":"property"},{"label":"onformdata","type":"property"},{"label":"onfocus","type":"property"},{"label":"onerror","type":"property"},{"label":"onended","type":"property"},{"label":"onemptied","type":"property"},{"label":"ondurationchange","type":"property"},{"label":"ondrop","type":"property"},{"label":"ondragstart","type":"property"},{"label":"ondragover","type":"property"},{"label":"ondragleave","type":"property"},{"label":"ondragenter","type":"property"},{"label":"ondragend","type":"property"},{"label":"ondrag","type":"property"},{"label":"ondeviceorientationabsolute","type":"property"},{"label":"ondeviceorientation","type":"property"},{"label":"ondevicemotion","type":"property"},{"label":"ondblclick","type":"property"},{"label":"oncuechange","type":"property"},{"label":"oncontextmenu","type":"property"},{"label":"onclose","type":"property"},{"label":"onclick","type":"property"},{"label":"onchange","type":"property"},{"label":"oncanplaythrough","type":"property"},{"label":"oncanplay","type":"property"},{"label":"oncancel","type":"property"},{"label":"onblur","type":"property"},{"label":"onbeforeunload","type":"property"},{"label":"onbeforeprint","type":"property"},{"label":"onbeforeinstallprompt","type":"property"},{"label":"onauxclick","type":"property"},{"label":"onappinstalled","type":"property"},{"label":"onanimationstart","type":"property"},{"label":"onanimationiteration","type":"property"},{"label":"onanimationend","type":"property"},{"label":"onafterprint","type":"property"},{"label":"onabort","type":"property"},{"label":"OffscreenCanvasRenderingContext2D","type":"property"},{"label":"OffscreenCanvas","type":"property"},{"label":"offscreenBuffering","type":"property"},{"label":"OfflineAudioContext","type":"property"},{"label":"OfflineAudioCompletionEvent","type":"property"},{"label":"Object","type":"property"},{"label":"Number","type":"property"},{"label":"Notification","type":"property"},{"label":"nodeRequire","type":"property"},{"label":"NodeList","type":"property"},{"label":"NodeIterator","type":"property"},{"label":"NodeFilter","type":"property"},{"label":"Node","type":"property"},{"label":"NetworkInformation","type":"property"},{"label":"Navigator","type":"property"},{"label":"navigator","type":"property"},{"label":"NavigationPreloadManager","type":"property"},{"label":"NaN","type":"property"},{"label":"NamedNodeMap","type":"property"},{"label":"name","type":"property"},{"label":"MutationRecord","type":"property"},{"label":"MutationObserver","type":"property"},{"label":"MutationEvent","type":"property"},{"label":"moveTo","type":"property"},{"label":"moveBy","type":"property"},{"label":"MouseEvent","type":"property"},{"label":"MonacoEnvironment","type":"property"},{"label":"module","type":"property"},{"label":"MimeTypeArray","type":"property"},{"label":"MimeType","type":"property"},{"label":"MIDIPort","type":"property"},{"label":"MIDIOutputMap","type":"property"},{"label":"MIDIOutput","type":"property"},{"label":"MIDIMessageEvent","type":"property"},{"label":"MIDIInputMap","type":"property"},{"label":"MIDIInput","type":"property"},{"label":"MIDIConnectionEvent","type":"property"},{"label":"MIDIAccess","type":"property"},{"label":"MessagePort","type":"property"},{"label":"MessageEvent","type":"property"},{"label":"MessageChannel","type":"property"},{"label":"menubar","type":"property"},{"label":"MediaStreamTrackEvent","type":"property"},{"label":"MediaStreamTrack","type":"property"},{"label":"MediaStreamEvent","type":"property"},{"label":"MediaStreamAudioSourceNode","type":"property"},{"label":"MediaStreamAudioDestinationNode","type":"property"},{"label":"MediaStream","type":"property"},{"label":"MediaSource","type":"property"},{"label":"MediaSettingsRange","type":"property"},{"label":"MediaSession","type":"property"},{"label":"MediaRecorder","type":"property"},{"label":"MediaQueryListEvent","type":"property"},{"label":"MediaQueryList","type":"property"},{"label":"MediaMetadata","type":"property"},{"label":"MediaList","type":"property"},{"label":"MediaKeySystemAccess","type":"property"},{"label":"MediaKeyStatusMap","type":"property"},{"label":"MediaKeySession","type":"property"},{"label":"MediaKeys","type":"property"},{"label":"MediaKeyMessageEvent","type":"property"},{"label":"MediaError","type":"property"},{"label":"MediaEncryptedEvent","type":"property"},{"label":"MediaElementAudioSourceNode","type":"property"},{"label":"MediaDevices","type":"property"},{"label":"MediaDeviceInfo","type":"property"},{"label":"MediaCapabilities","type":"property"},{"label":"Math","type":"property"},{"label":"matchMedia","type":"property"},{"label":"Map","type":"property"},{"label":"LockManager","type":"property"},{"label":"Lock","type":"property"},{"label":"locationbar","type":"property"},{"label":"Location","type":"property"},{"label":"location","type":"property"},{"label":"localStorage","type":"property"},{"label":"LinearAccelerationSensor","type":"property"},{"label":"length","type":"property"},{"label":"LayoutShift","type":"property"},{"label":"LargestContentfulPaint","type":"property"},{"label":"KeyframeEffect","type":"property"},{"label":"KeyboardLayoutMap","type":"property"},{"label":"KeyboardEvent","type":"property"},{"label":"Keyboard","type":"property"},{"label":"isSecureContext","type":"property"},{"label":"isNaN","type":"property"},{"label":"isFinite","type":"property"},{"label":"Intl","type":"property"},{"label":"IntersectionObserverEntry","type":"property"},{"label":"IntersectionObserver","type":"property"},{"label":"Int8Array","type":"property"},{"label":"Int32Array","type":"property"},{"label":"Int16Array","type":"property"},{"label":"InputEvent","type":"property"},{"label":"InputDeviceInfo","type":"property"},{"label":"InputDeviceCapabilities","type":"property"},{"label":"innerWidth","type":"property"},{"label":"innerHeight","type":"property"},{"label":"Infinity","type":"property"},{"label":"indexedDB","type":"property"},{"label":"ImageData","type":"property"},{"label":"ImageCapture","type":"property"},{"label":"ImageBitmapRenderingContext","type":"property"},{"label":"ImageBitmap","type":"property"},{"label":"Image","type":"property"},{"label":"IIRFilterNode","type":"property"},{"label":"IdleDeadline","type":"property"},{"label":"IDBVersionChangeEvent","type":"property"},{"label":"IDBTransaction","type":"property"},{"label":"IDBRequest","type":"property"},{"label":"IDBOpenDBRequest","type":"property"},{"label":"IDBObjectStore","type":"property"},{"label":"IDBKeyRange","type":"property"},{"label":"IDBIndex","type":"property"},{"label":"IDBFactory","type":"property"},{"label":"IDBDatabase","type":"property"},{"label":"IDBCursorWithValue","type":"property"},{"label":"IDBCursor","type":"property"},{"label":"HTMLVideoElement","type":"property"},{"label":"HTMLUnknownElement","type":"property"},{"label":"HTMLUListElement","type":"property"},{"label":"HTMLTrackElement","type":"property"},{"label":"HTMLTitleElement","type":"property"},{"label":"HTMLTimeElement","type":"property"},{"label":"HTMLTextAreaElement","type":"property"},{"label":"HTMLTemplateElement","type":"property"},{"label":"HTMLTableSectionElement","type":"property"},{"label":"HTMLTableRowElement","type":"property"},{"label":"HTMLTableElement","type":"property"},{"label":"HTMLTableColElement","type":"property"},{"label":"HTMLTableCellElement","type":"property"},{"label":"HTMLTableCaptionElement","type":"property"},{"label":"HTMLStyleElement","type":"property"},{"label":"HTMLSpanElement","type":"property"},{"label":"HTMLSourceElement","type":"property"},{"label":"HTMLSlotElement","type":"property"},{"label":"HTMLShadowElement","type":"property"},{"label":"HTMLSelectElement","type":"property"},{"label":"HTMLScriptElement","type":"property"},{"label":"HTMLQuoteElement","type":"property"},{"label":"HTMLProgressElement","type":"property"},{"label":"HTMLPreElement","type":"property"},{"label":"HTMLPictureElement","type":"property"},{"label":"HTMLParamElement","type":"property"},{"label":"HTMLParagraphElement","type":"property"},{"label":"HTMLOutputElement","type":"property"},{"label":"HTMLOptionsCollection","type":"property"},{"label":"HTMLOptionElement","type":"property"},{"label":"HTMLOptGroupElement","type":"property"},{"label":"HTMLOListElement","type":"property"},{"label":"HTMLObjectElement","type":"property"},{"label":"HTMLModElement","type":"property"},{"label":"HTMLMeterElement","type":"property"},{"label":"HTMLMetaElement","type":"property"},{"label":"HTMLMenuElement","type":"property"},{"label":"HTMLMediaElement","type":"property"},{"label":"HTMLMarqueeElement","type":"property"},{"label":"HTMLMapElement","type":"property"},{"label":"HTMLLinkElement","type":"property"},{"label":"HTMLLIElement","type":"property"},{"label":"HTMLLegendElement","type":"property"},{"label":"HTMLLabelElement","type":"property"},{"label":"HTMLInputElement","type":"property"},{"label":"HTMLImageElement","type":"property"},{"label":"HTMLIFrameElement","type":"property"},{"label":"HTMLHtmlElement","type":"property"},{"label":"HTMLHRElement","type":"property"},{"label":"HTMLHeadingElement","type":"property"},{"label":"HTMLHeadElement","type":"property"},{"label":"HTMLFrameSetElement","type":"property"},{"label":"HTMLFrameElement","type":"property"},{"label":"HTMLFormElement","type":"property"},{"label":"HTMLFormControlsCollection","type":"property"},{"label":"HTMLFontElement","type":"property"},{"label":"HTMLFieldSetElement","type":"property"},{"label":"HTMLEmbedElement","type":"property"},{"label":"HTMLElement","type":"property"},{"label":"HTMLDocument","type":"property"},{"label":"HTMLDListElement","type":"property"},{"label":"HTMLDivElement","type":"property"},{"label":"HTMLDirectoryElement","type":"property"},{"label":"HTMLDialogElement","type":"property"},{"label":"HTMLDetailsElement","type":"property"},{"label":"HTMLDataListElement","type":"property"},{"label":"HTMLDataElement","type":"property"},{"label":"HTMLContentElement","type":"property"},{"label":"HTMLCollection","type":"property"},{"label":"HTMLCanvasElement","type":"property"},{"label":"HTMLButtonElement","type":"property"},{"label":"HTMLBRElement","type":"property"},{"label":"HTMLBodyElement","type":"property"},{"label":"HTMLBaseElement","type":"property"},{"label":"HTMLAudioElement","type":"property"},{"label":"HTMLAreaElement","type":"property"},{"label":"HTMLAnchorElement","type":"property"},{"label":"HTMLAllCollection","type":"property"},{"label":"History","type":"property"},{"label":"history","type":"property"},{"label":"Headers","type":"property"},{"label":"HashChangeEvent","type":"property"},{"label":"Gyroscope","type":"property"},{"label":"globalThis","type":"property"},{"label":"set GLOBAL","type":"property"},{"label":"get GLOBAL","type":"property"},{"label":"global","type":"property"},{"label":"getSelection","type":"property"},{"label":"getLazyEnv","type":"property"},{"label":"getComputedStyle","type":"property"},{"label":"GamepadHapticActuator","type":"property"},{"label":"GamepadEvent","type":"property"},{"label":"GamepadButton","type":"property"},{"label":"Gamepad","type":"property"},{"label":"GainNode","type":"property"},{"label":"Function","type":"property"},{"label":"frames","type":"property"},{"label":"frameElement","type":"property"},{"label":"FormDataEvent","type":"property"},{"label":"FormData","type":"property"},{"label":"FontFaceSetLoadEvent","type":"property"},{"label":"FontFace","type":"property"},{"label":"FocusEvent","type":"property"},{"label":"focus","type":"property"},{"label":"Float64Array","type":"property"},{"label":"Float32Array","type":"property"},{"label":"find","type":"property"},{"label":"FileReader","type":"property"},{"label":"FileList","type":"property"},{"label":"File","type":"property"},{"label":"fetch","type":"property"},{"label":"FederatedCredential","type":"property"},{"label":"External","type":"property"},{"label":"external","type":"property"},{"label":"EventTarget","type":"property"},{"label":"EventSource","type":"property"},{"label":"Event","type":"property"},{"label":"event","type":"property"},{"label":"EvalError","type":"property"},{"label":"eval","type":"property"},{"label":"escape","type":"property"},{"label":"ErrorEvent","type":"property"},{"label":"Error","type":"property"},{"label":"EnterPictureInPictureEvent","type":"property"},{"label":"encodeURIComponent","type":"property"},{"label":"encodeURI","type":"property"},{"label":"ElementInternals","type":"property"},{"label":"Element","type":"property"},{"label":"DynamicsCompressorNode","type":"property"},{"label":"DragEvent","type":"property"},{"label":"DOMTokenList","type":"property"},{"label":"DOMStringMap","type":"property"},{"label":"DOMStringList","type":"property"},{"label":"DOMRectReadOnly","type":"property"},{"label":"DOMRectList","type":"property"},{"label":"DOMRect","type":"property"},{"label":"DOMQuad","type":"property"},{"label":"DOMPointReadOnly","type":"property"},{"label":"DOMPoint","type":"property"},{"label":"DOMParser","type":"property"},{"label":"DOMMatrixReadOnly","type":"property"},{"label":"DOMMatrix","type":"property"},{"label":"DOMImplementation","type":"property"},{"label":"DOMException","type":"property"},{"label":"DOMError","type":"property"},{"label":"DocumentType","type":"property"},{"label":"DocumentFragment","type":"property"},{"label":"Document","type":"property"},{"label":"document","type":"property"},{"label":"devicePixelRatio","type":"property"},{"label":"DeviceOrientationEvent","type":"property"},{"label":"DeviceMotionEventRotationRate","type":"property"},{"label":"DeviceMotionEventAcceleration","type":"property"},{"label":"DeviceMotionEvent","type":"property"},{"label":"DelayNode","type":"property"},{"label":"defaultStatus","type":"property"},{"label":"defaultstatus","type":"property"},{"label":"decodeURIComponent","type":"property"},{"label":"decodeURI","type":"property"},{"label":"Date","type":"property"},{"label":"DataView","type":"property"},{"label":"DataTransferItemList","type":"property"},{"label":"DataTransferItem","type":"property"},{"label":"DataTransfer","type":"property"},{"label":"CustomEvent","type":"property"},{"label":"customElements","type":"property"},{"label":"CustomElementRegistry","type":"property"},{"label":"CSSVariableReferenceValue","type":"property"},{"label":"CSSUnparsedValue","type":"property"},{"label":"CSSUnitValue","type":"property"},{"label":"CSSTranslate","type":"property"},{"label":"CSSTransformValue","type":"property"},{"label":"CSSTransformComponent","type":"property"},{"label":"CSSSupportsRule","type":"property"},{"label":"CSSStyleValue","type":"property"},{"label":"CSSStyleSheet","type":"property"},{"label":"CSSStyleRule","type":"property"},{"label":"CSSStyleDeclaration","type":"property"},{"label":"CSSSkewY","type":"property"},{"label":"CSSSkewX","type":"property"},{"label":"CSSSkew","type":"property"},{"label":"CSSScale","type":"property"},{"label":"CSSRuleList","type":"property"},{"label":"CSSRule","type":"property"},{"label":"CSSRotate","type":"property"},{"label":"CSSPositionValue","type":"property"},{"label":"CSSPerspective","type":"property"},{"label":"CSSPageRule","type":"property"},{"label":"CSSNumericValue","type":"property"},{"label":"CSSNumericArray","type":"property"},{"label":"CSSNamespaceRule","type":"property"},{"label":"CSSMediaRule","type":"property"},{"label":"CSSMatrixComponent","type":"property"},{"label":"CSSMathValue","type":"property"},{"label":"CSSMathSum","type":"property"},{"label":"CSSMathProduct","type":"property"},{"label":"CSSMathNegate","type":"property"},{"label":"CSSMathMin","type":"property"},{"label":"CSSMathMax","type":"property"},{"label":"CSSMathInvert","type":"property"},{"label":"CSSKeywordValue","type":"property"},{"label":"CSSKeyframesRule","type":"property"},{"label":"CSSKeyframeRule","type":"property"},{"label":"CSSImportRule","type":"property"},{"label":"CSSImageValue","type":"property"},{"label":"CSSGroupingRule","type":"property"},{"label":"CSSFontFaceRule","type":"property"},{"label":"CSSConditionRule","type":"property"},{"label":"CSS","type":"property"},{"label":"CryptoKey","type":"property"},{"label":"Crypto","type":"property"},{"label":"crypto","type":"property"},{"label":"CredentialsContainer","type":"property"},{"label":"Credential","type":"property"},{"label":"createImageBitmap","type":"property"},{"label":"CountQueuingStrategy","type":"property"},{"label":"ConvolverNode","type":"property"},{"label":"ConstantSourceNode","type":"property"},{"label":"console","type":"property"},{"label":"confirm","type":"property"},{"label":"CompositionEvent","type":"property"},{"label":"Comment","type":"property"},{"label":"CloseEvent","type":"property"},{"label":"closed","type":"property"},{"label":"close","type":"property"},{"label":"ClipboardItem","type":"property"},{"label":"ClipboardEvent","type":"property"},{"label":"Clipboard","type":"property"},{"label":"clientInformation","type":"property"},{"label":"clearTimeout","type":"property"},{"label":"clearInterval","type":"property"},{"label":"clearImmediate","type":"property"},{"label":"CharacterData","type":"property"},{"label":"ChannelSplitterNode","type":"property"},{"label":"ChannelMergerNode","type":"property"},{"label":"CDATASection","type":"property"},{"label":"captureEvents","type":"property"},{"label":"CanvasRenderingContext2D","type":"property"},{"label":"CanvasPattern","type":"property"},{"label":"CanvasGradient","type":"property"},{"label":"CanvasCaptureMediaStreamTrack","type":"property"},{"label":"cancelIdleCallback","type":"property"},{"label":"cancelAnimationFrame","type":"property"},{"label":"CacheStorage","type":"property"},{"label":"caches","type":"property"},{"label":"Cache","type":"property"},{"label":"ByteLengthQueuingStrategy","type":"property"},{"label":"set Buffer","type":"property"},{"label":"get Buffer","type":"property"},{"label":"btoa","type":"property"},{"label":"BroadcastChannel","type":"property"},{"label":"Boolean","type":"property"},{"label":"blur","type":"property"},{"label":"BluetoothUUID","type":"property"},{"label":"BluetoothRemoteGATTService","type":"property"},{"label":"BluetoothRemoteGATTServer","type":"property"},{"label":"BluetoothRemoteGATTDescriptor","type":"property"},{"label":"BluetoothRemoteGATTCharacteristic","type":"property"},{"label":"BluetoothDevice","type":"property"},{"label":"BluetoothCharacteristicProperties","type":"property"},{"label":"Bluetooth","type":"property"},{"label":"BlobEvent","type":"property"},{"label":"Blob","type":"property"},{"label":"BiquadFilterNode","type":"property"},{"label":"BigUint64Array","type":"property"},{"label":"BigInt64Array","type":"property"},{"label":"BigInt","type":"property"},{"label":"BeforeUnloadEvent","type":"property"},{"label":"BeforeInstallPromptEvent","type":"property"},{"label":"BatteryManager","type":"property"},{"label":"BaseAudioContext","type":"property"},{"label":"BarProp","type":"property"},{"label":"BackgroundFetchRegistration","type":"property"},{"label":"BackgroundFetchRecord","type":"property"},{"label":"BackgroundFetchManager","type":"property"},{"label":"AuthenticatorResponse","type":"property"},{"label":"AuthenticatorAttestationResponse","type":"property"},{"label":"AuthenticatorAssertionResponse","type":"property"},{"label":"AudioWorkletNode","type":"property"},{"label":"AudioWorklet","type":"property"},{"label":"AudioScheduledSourceNode","type":"property"},{"label":"AudioProcessingEvent","type":"property"},{"label":"AudioParamMap","type":"property"},{"label":"AudioParam","type":"property"},{"label":"AudioNode","type":"property"},{"label":"AudioListener","type":"property"},{"label":"AudioDestinationNode","type":"property"},{"label":"AudioContext","type":"property"},{"label":"AudioBufferSourceNode","type":"property"},{"label":"AudioBuffer","type":"property"},{"label":"Audio","type":"property"},{"label":"Attr","type":"property"},{"label":"Atomics","type":"property"},{"label":"atob","type":"property"},{"label":"ArrayBuffer","type":"property"},{"label":"Array","type":"property"},{"label":"ApplicationCacheErrorEvent","type":"property"},{"label":"ApplicationCache","type":"property"},{"label":"applicationCache","type":"property"},{"label":"AnimationEvent","type":"property"},{"label":"AnimationEffect","type":"property"},{"label":"Animation","type":"property"},{"label":"AnalyserNode","type":"property"},{"label":"alert","type":"property"},{"label":"Accelerometer","type":"property"},{"label":"AbsoluteOrientationSensor","type":"property"},{"label":"AbortSignal","type":"property"},{"label":"AbortController","type":"property"},{"label":"_performanceEntries","type":"property"},{"label":"__filename","type":"property"},{"label":"__dirname","type":"property"},{"label":"perf","type":"property"},{"label":"bootstrapWindow","type":"property"},{"label":"nls","type":"property"},{"label":"event_1","type":"property"},{"label":"async_1","type":"property"},{"label":"arrays","type":"property"},{"label":"this","type":"property"},{"label":"target","type":"property"},{"label":"shouldPreventDefault","type":"property"},{"label":"resolveResult","type":"property"},{"label":"keypressLabel","type":"property"},{"label":"keybinding","type":"property"},{"label":"firstPart","type":"property"},{"label":"currentChord","type":"property"},{"label":"contextValue","type":"property"},{"label":"JSON","sortText":"~~JSON","type":"variable"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425898039,"metadata":{"connectionId":1,"message":{"command":"completions","arguments":{"frameId":451,"text":"JSON>s","column":7,"line":1},"type":"request","seq":52}},"level":0} {"tag":"cdp.send","timestamp":1588425898040,"metadata":{"connectionId":0,"message":{"id":116,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"(self)","objectGroup":"console","silent":true,"throwOnSideEffect":false,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425898041,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1613","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":1,"hash":"338fef78819848be36328c15cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425898041,"metadata":{"connectionId":0,"message":{"id":116,"result":{"result":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":948}"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425898043,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425898044,"metadata":{"connectionId":1,"message":{"seq":3446,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756700","path":"<eval>/VM633756700","sourceReference":633756700}}}},"level":0} {"tag":"cdp.send","timestamp":1588425898044,"metadata":{"connectionId":0,"message":{"id":117,"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"function(e,t,r){const n=r?\"variable\":\"property\",i=(e,t,i)=>{if(\"function\"!==t)return n;if(\"constructor\"===e)return\"class\";const a=String(i);return a.startsWith(\"class \")||a.includes(\"[native code]\")&&/^[A-Z]/.test(e)?\"class\":r?\"function\":\"method\"},a=[],o=new Set;let s=\"~\",c=void 0===e?this:e;for(;null!=c;c=c.__proto__){s+=\"~\";const e=Object.getOwnPropertyNames(c).filter(e=>e.startsWith(t)&&!e.match(/^\\d+$/));for(const t of e){if(o.has(t))continue;o.add(t);const e=Object.getOwnPropertyDescriptor(c,t);let r=n;try{r=i(t,typeof(null==e?void 0:e.value),c[t])}catch(e){}a.push({label:t,sortText:s+t.replace(/^_+/,e=>\"{\".repeat(e.length)),type:r})}r=!1}return{result:a,isArray:this instanceof Array}}","arguments":[{},{"value":"s"},{"value":true}],"objectId":"{\"injectedScriptId\":1,\"id\":948}","returnByValue":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425898047,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1616","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":701,"executionContextId":1,"hash":"045dbea2708b71047124f11f2c93e91c2ae896dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":701,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425898048,"metadata":{"connectionId":0,"message":{"id":117,"result":{"result":{"type":"object","value":{"result":[{"label":"self","sortText":"~~self","type":"variable"},{"label":"scrollbars","sortText":"~~scrollbars","type":"variable"},{"label":"statusbar","sortText":"~~statusbar","type":"variable"},{"label":"status","sortText":"~~status","type":"variable"},{"label":"screen","sortText":"~~screen","type":"variable"},{"label":"scrollX","sortText":"~~scrollX","type":"variable"},{"label":"scrollY","sortText":"~~scrollY","type":"variable"},{"label":"screenX","sortText":"~~screenX","type":"variable"},{"label":"screenY","sortText":"~~screenY","type":"variable"},{"label":"screenLeft","sortText":"~~screenLeft","type":"variable"},{"label":"screenTop","sortText":"~~screenTop","type":"variable"},{"label":"styleMedia","sortText":"~~styleMedia","type":"variable"},{"label":"stop","sortText":"~~stop","type":"function"},{"label":"scroll","sortText":"~~scroll","type":"function"},{"label":"scrollTo","sortText":"~~scrollTo","type":"function"},{"label":"scrollBy","sortText":"~~scrollBy","type":"function"},{"label":"setTimeout","sortText":"~~setTimeout","type":"function"},{"label":"setInterval","sortText":"~~setInterval","type":"function"},{"label":"sessionStorage","sortText":"~~sessionStorage","type":"variable"},{"label":"speechSynthesis","sortText":"~~speechSynthesis","type":"variable"},{"label":"setImmediate","sortText":"~~setImmediate","type":"function"},{"label":"showPartsSplash","sortText":"~~showPartsSplash","type":"function"}],"isArray":false}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425898048,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425898049,"metadata":{"connectionId":1,"message":{"seq":3447,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756701","path":"<eval>/VM633756701","sourceReference":633756701}}}},"level":0} {"tag":"cdp.send","timestamp":1588425898049,"metadata":{"connectionId":0,"message":{"id":118,"method":"Runtime.releaseObject","params":{"objectId":"{\"injectedScriptId\":1,\"id\":948}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425898050,"metadata":{"connectionId":1,"message":{"seq":3448,"type":"response","request_seq":52,"command":"completions","success":true,"body":{"targets":[{"label":"__proto__","type":"property"},{"label":"XSLTProcessor","type":"property"},{"label":"XPathResult","type":"property"},{"label":"XPathExpression","type":"property"},{"label":"XPathEvaluator","type":"property"},{"label":"XMLSerializer","type":"property"},{"label":"XMLHttpRequestUpload","type":"property"},{"label":"XMLHttpRequestEventTarget","type":"property"},{"label":"XMLHttpRequest","type":"property"},{"label":"XMLDocument","type":"property"},{"label":"WritableStreamDefaultWriter","type":"property"},{"label":"WritableStream","type":"property"},{"label":"Worklet","type":"property"},{"label":"Worker","type":"property"},{"label":"Window","type":"property"},{"label":"window","type":"property"},{"label":"WheelEvent","type":"property"},{"label":"WebView","type":"property"},{"label":"WebSocket","type":"property"},{"label":"webkitURL","type":"property"},{"label":"webkitStorageInfo","type":"property"},{"label":"webkitSpeechRecognitionEvent","type":"property"},{"label":"webkitSpeechRecognitionError","type":"property"},{"label":"webkitSpeechRecognition","type":"property"},{"label":"webkitSpeechGrammarList","type":"property"},{"label":"webkitSpeechGrammar","type":"property"},{"label":"webkitRTCPeerConnection","type":"property"},{"label":"webkitResolveLocalFileSystemURL","type":"property"},{"label":"webkitRequestFileSystem","type":"property"},{"label":"webkitRequestAnimationFrame","type":"property"},{"label":"WebKitMutationObserver","type":"property"},{"label":"webkitMediaStream","type":"property"},{"label":"WebKitCSSMatrix","type":"property"},{"label":"webkitCancelAnimationFrame","type":"property"},{"label":"WebGLVertexArrayObject","type":"property"},{"label":"WebGLUniformLocation","type":"property"},{"label":"WebGLTransformFeedback","type":"property"},{"label":"WebGLTexture","type":"property"},{"label":"WebGLSync","type":"property"},{"label":"WebGLShaderPrecisionFormat","type":"property"},{"label":"WebGLShader","type":"property"},{"label":"WebGLSampler","type":"property"},{"label":"WebGLRenderingContext","type":"property"},{"label":"WebGLRenderbuffer","type":"property"},{"label":"WebGLQuery","type":"property"},{"label":"WebGLProgram","type":"property"},{"label":"WebGLFramebuffer","type":"property"},{"label":"WebGLContextEvent","type":"property"},{"label":"WebGLBuffer","type":"property"},{"label":"WebGLActiveInfo","type":"property"},{"label":"WebGL2RenderingContext","type":"property"},{"label":"WebAssembly","type":"property"},{"label":"WeakSet","type":"property"},{"label":"WeakMap","type":"property"},{"label":"WaveShaperNode","type":"property"},{"label":"VTTCue","type":"property"},{"label":"VisualViewport","type":"property"},{"label":"visualViewport","type":"property"},{"label":"ValidityState","type":"property"},{"label":"UserActivation","type":"property"},{"label":"USBOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferPacket","type":"property"},{"label":"USBIsochronousInTransferResult","type":"property"},{"label":"USBIsochronousInTransferPacket","type":"property"},{"label":"USBInTransferResult","type":"property"},{"label":"USBInterface","type":"property"},{"label":"USBEndpoint","type":"property"},{"label":"USBDevice","type":"property"},{"label":"USBConnectionEvent","type":"property"},{"label":"USBConfiguration","type":"property"},{"label":"USBAlternateInterface","type":"property"},{"label":"USB","type":"property"},{"label":"URLSearchParams","type":"property"},{"label":"URL","type":"property"},{"label":"URIError","type":"property"},{"label":"unescape","type":"property"},{"label":"undefined","type":"property"},{"label":"Uint8ClampedArray","type":"property"},{"label":"Uint8Array","type":"property"},{"label":"Uint32Array","type":"property"},{"label":"Uint16Array","type":"property"},{"label":"UIEvent","type":"property"},{"label":"TypeError","type":"property"},{"label":"TreeWalker","type":"property"},{"label":"TransitionEvent","type":"property"},{"label":"TransformStream","type":"property"},{"label":"TrackEvent","type":"property"},{"label":"TouchList","type":"property"},{"label":"TouchEvent","type":"property"},{"label":"Touch","type":"property"},{"label":"top","type":"property"},{"label":"toolbar","type":"property"},{"label":"TimeRanges","type":"property"},{"label":"TextTrackList","type":"property"},{"label":"TextTrackCueList","type":"property"},{"label":"TextTrackCue","type":"property"},{"label":"TextTrack","type":"property"},{"label":"TextMetrics","type":"property"},{"label":"TextEvent","type":"property"},{"label":"TextEncoderStream","type":"property"},{"label":"TextEncoder","type":"property"},{"label":"TextDecoderStream","type":"property"},{"label":"TextDecoder","type":"property"},{"label":"Text","type":"property"},{"label":"TaskAttributionTiming","type":"property"},{"label":"SyntaxError","type":"property"},{"label":"SyncManager","type":"property"},{"label":"Symbol(Symbol.toStringTag)","type":"property"},{"label":"get Symbol(graceful-fs.queue)","type":"property"},{"label":"Symbol","type":"property"},{"label":"SVGViewElement","type":"property"},{"label":"SVGUseElement","type":"property"},{"label":"SVGUnitTypes","type":"property"},{"label":"SVGTSpanElement","type":"property"},{"label":"SVGTransformList","type":"property"},{"label":"SVGTransform","type":"property"},{"label":"SVGTitleElement","type":"property"},{"label":"SVGTextPositioningElement","type":"property"},{"label":"SVGTextPathElement","type":"property"},{"label":"SVGTextElement","type":"property"},{"label":"SVGTextContentElement","type":"property"},{"label":"SVGSymbolElement","type":"property"},{"label":"SVGSwitchElement","type":"property"},{"label":"SVGSVGElement","type":"property"},{"label":"SVGStyleElement","type":"property"},{"label":"SVGStringList","type":"property"},{"label":"SVGStopElement","type":"property"},{"label":"SVGSetElement","type":"property"},{"label":"SVGScriptElement","type":"property"},{"label":"SVGRectElement","type":"property"},{"label":"SVGRect","type":"property"},{"label":"SVGRadialGradientElement","type":"property"},{"label":"SVGPreserveAspectRatio","type":"property"},{"label":"SVGPolylineElement","type":"property"},{"label":"SVGPolygonElement","type":"property"},{"label":"SVGPointList","type":"property"},{"label":"SVGPoint","type":"property"},{"label":"SVGPatternElement","type":"property"},{"label":"SVGPathElement","type":"property"},{"label":"SVGNumberList","type":"property"},{"label":"SVGNumber","type":"property"},{"label":"SVGMPathElement","type":"property"},{"label":"SVGMetadataElement","type":"property"},{"label":"SVGMatrix","type":"property"},{"label":"SVGMaskElement","type":"property"},{"label":"SVGMarkerElement","type":"property"},{"label":"SVGLineElement","type":"property"},{"label":"SVGLinearGradientElement","type":"property"},{"label":"SVGLengthList","type":"property"},{"label":"SVGLength","type":"property"},{"label":"SVGImageElement","type":"property"},{"label":"SVGGraphicsElement","type":"property"},{"label":"SVGGradientElement","type":"property"},{"label":"SVGGeometryElement","type":"property"},{"label":"SVGGElement","type":"property"},{"label":"SVGForeignObjectElement","type":"property"},{"label":"SVGFilterElement","type":"property"},{"label":"SVGFETurbulenceElement","type":"property"},{"label":"SVGFETileElement","type":"property"},{"label":"SVGFESpotLightElement","type":"property"},{"label":"SVGFESpecularLightingElement","type":"property"},{"label":"SVGFEPointLightElement","type":"property"},{"label":"SVGFEOffsetElement","type":"property"},{"label":"SVGFEMorphologyElement","type":"property"},{"label":"SVGFEMergeNodeElement","type":"property"},{"label":"SVGFEMergeElement","type":"property"},{"label":"SVGFEImageElement","type":"property"},{"label":"SVGFEGaussianBlurElement","type":"property"},{"label":"SVGFEFuncRElement","type":"property"},{"label":"SVGFEFuncGElement","type":"property"},{"label":"SVGFEFuncBElement","type":"property"},{"label":"SVGFEFuncAElement","type":"property"},{"label":"SVGFEFloodElement","type":"property"},{"label":"SVGFEDropShadowElement","type":"property"},{"label":"SVGFEDistantLightElement","type":"property"},{"label":"SVGFEDisplacementMapElement","type":"property"},{"label":"SVGFEDiffuseLightingElement","type":"property"},{"label":"SVGFEConvolveMatrixElement","type":"property"},{"label":"SVGFECompositeElement","type":"property"},{"label":"SVGFEComponentTransferElement","type":"property"},{"label":"SVGFEColorMatrixElement","type":"property"},{"label":"SVGFEBlendElement","type":"property"},{"label":"SVGEllipseElement","type":"property"},{"label":"SVGElement","type":"property"},{"label":"SVGDiscardElement","type":"property"},{"label":"SVGDescElement","type":"property"},{"label":"SVGDefsElement","type":"property"},{"label":"SVGComponentTransferFunctionElement","type":"property"},{"label":"SVGClipPathElement","type":"property"},{"label":"SVGCircleElement","type":"property"},{"label":"SVGAnimationElement","type":"property"},{"label":"SVGAnimateTransformElement","type":"property"},{"label":"SVGAnimateMotionElement","type":"property"},{"label":"SVGAnimateElement","type":"property"},{"label":"SVGAnimatedTransformList","type":"property"},{"label":"SVGAnimatedString","type":"property"},{"label":"SVGAnimatedRect","type":"property"},{"label":"SVGAnimatedPreserveAspectRatio","type":"property"},{"label":"SVGAnimatedNumberList","type":"property"},{"label":"SVGAnimatedNumber","type":"property"},{"label":"SVGAnimatedLengthList","type":"property"},{"label":"SVGAnimatedLength","type":"property"},{"label":"SVGAnimatedInteger","type":"property"},{"label":"SVGAnimatedEnumeration","type":"property"},{"label":"SVGAnimatedBoolean","type":"property"},{"label":"SVGAnimatedAngle","type":"property"},{"label":"SVGAngle","type":"property"},{"label":"SVGAElement","type":"property"},{"label":"SubtleCrypto","type":"property"},{"label":"StyleSheetList","type":"property"},{"label":"StyleSheet","type":"property"},{"label":"StylePropertyMapReadOnly","type":"property"},{"label":"StylePropertyMap","type":"property"},{"label":"String","type":"property"},{"label":"StorageManager","type":"property"},{"label":"StorageEvent","type":"property"},{"label":"Storage","type":"property"},{"label":"StereoPannerNode","type":"property"},{"label":"StaticRange","type":"property"},{"label":"SpeechSynthesisUtterance","type":"property"},{"label":"SpeechSynthesisEvent","type":"property"},{"label":"SpeechSynthesisErrorEvent","type":"property"},{"label":"SourceBufferList","type":"property"},{"label":"SourceBuffer","type":"property"},{"label":"SharedWorker","type":"property"},{"label":"SharedArrayBuffer","type":"property"},{"label":"ShadowRoot","type":"property"},{"label":"Set","type":"property"},{"label":"ServiceWorkerRegistration","type":"property"},{"label":"ServiceWorkerContainer","type":"property"},{"label":"ServiceWorker","type":"property"},{"label":"SensorErrorEvent","type":"property"},{"label":"Sensor","type":"property"},{"label":"Selection","type":"property"},{"label":"SecurityPolicyViolationEvent","type":"property"},{"label":"ScriptProcessorNode","type":"property"},{"label":"ScreenOrientation","type":"property"},{"label":"Screen","type":"property"},{"label":"RTCTrackEvent","type":"property"},{"label":"RTCStatsReport","type":"property"},{"label":"RTCSessionDescription","type":"property"},{"label":"RTCSctpTransport","type":"property"},{"label":"RTCRtpTransceiver","type":"property"},{"label":"RTCRtpSender","type":"property"},{"label":"RTCRtpReceiver","type":"property"},{"label":"RTCPeerConnectionIceEvent","type":"property"},{"label":"RTCPeerConnectionIceErrorEvent","type":"property"},{"label":"RTCPeerConnection","type":"property"},{"label":"RTCIceTransport","type":"property"},{"label":"RTCIceCandidate","type":"property"},{"label":"RTCErrorEvent","type":"property"},{"label":"RTCError","type":"property"},{"label":"RTCDTMFToneChangeEvent","type":"property"},{"label":"RTCDTMFSender","type":"property"},{"label":"RTCDtlsTransport","type":"property"},{"label":"RTCDataChannelEvent","type":"property"},{"label":"RTCDataChannel","type":"property"},{"label":"RTCCertificate","type":"property"},{"label":"set root","type":"property"},{"label":"get root","type":"property"},{"label":"Response","type":"property"},{"label":"resizeTo","type":"property"},{"label":"ResizeObserverEntry","type":"property"},{"label":"ResizeObserver","type":"property"},{"label":"resizeBy","type":"property"},{"label":"require","type":"property"},{"label":"requestIdleCallback","type":"property"},{"label":"requestAnimationFrame","type":"property"},{"label":"Request","type":"property"},{"label":"ReportingObserver","type":"property"},{"label":"RemotePlayback","type":"property"},{"label":"releaseEvents","type":"property"},{"label":"RelativeOrientationSensor","type":"property"},{"label":"RegExp","type":"property"},{"label":"Reflect","type":"property"},{"label":"ReferenceError","type":"property"},{"label":"ReadableStreamDefaultReader","type":"property"},{"label":"ReadableStream","type":"property"},{"label":"RangeError","type":"property"},{"label":"Range","type":"property"},{"label":"RadioNodeList","type":"property"},{"label":"queueMicrotask","type":"property"},{"label":"PushSubscriptionOptions","type":"property"},{"label":"PushSubscription","type":"property"},{"label":"PushManager","type":"property"},{"label":"PublicKeyCredential","type":"property"},{"label":"Proxy","type":"property"},{"label":"prompt","type":"property"},{"label":"PromiseRejectionEvent","type":"property"},{"label":"Promise","type":"property"},{"label":"ProgressEvent","type":"property"},{"label":"ProcessingInstruction","type":"property"},{"label":"set process","type":"property"},{"label":"get process","type":"property"},{"label":"print","type":"property"},{"label":"PresentationRequest","type":"property"},{"label":"PresentationReceiver","type":"property"},{"label":"PresentationConnectionList","type":"property"},{"label":"PresentationConnectionCloseEvent","type":"property"},{"label":"PresentationConnectionAvailableEvent","type":"property"},{"label":"PresentationConnection","type":"property"},{"label":"PresentationAvailability","type":"property"},{"label":"Presentation","type":"property"},{"label":"postMessage","type":"property"},{"label":"PopStateEvent","type":"property"},{"label":"PointerEvent","type":"property"},{"label":"PluginArray","type":"property"},{"label":"Plugin","type":"property"},{"label":"PictureInPictureWindow","type":"property"},{"label":"PhotoCapabilities","type":"property"},{"label":"personalbar","type":"property"},{"label":"PermissionStatus","type":"property"},{"label":"Permissions","type":"property"},{"label":"PeriodicWave","type":"property"},{"label":"PerformanceTiming","type":"property"},{"label":"PerformanceServerTiming","type":"property"},{"label":"PerformanceResourceTiming","type":"property"},{"label":"PerformancePaintTiming","type":"property"},{"label":"PerformanceObserverEntryList","type":"property"},{"label":"PerformanceObserver","type":"property"},{"label":"PerformanceNavigationTiming","type":"property"},{"label":"PerformanceNavigation","type":"property"},{"label":"PerformanceMeasure","type":"property"},{"label":"PerformanceMark","type":"property"},{"label":"PerformanceLongTaskTiming","type":"property"},{"label":"PerformanceEventTiming","type":"property"},{"label":"PerformanceEntry","type":"property"},{"label":"PerformanceElementTiming","type":"property"},{"label":"Performance","type":"property"},{"label":"performance","type":"property"},{"label":"PaymentResponse","type":"property"},{"label":"PaymentRequestUpdateEvent","type":"property"},{"label":"PaymentRequest","type":"property"},{"label":"PaymentMethodChangeEvent","type":"property"},{"label":"PaymentManager","type":"property"},{"label":"PaymentInstruments","type":"property"},{"label":"PaymentAddress","type":"property"},{"label":"Path2D","type":"property"},{"label":"PasswordCredential","type":"property"},{"label":"parseInt","type":"property"},{"label":"parseFloat","type":"property"},{"label":"parent","type":"property"},{"label":"PannerNode","type":"property"},{"label":"pageYOffset","type":"property"},{"label":"pageXOffset","type":"property"},{"label":"PageTransitionEvent","type":"property"},{"label":"OverconstrainedError","type":"property"},{"label":"outerWidth","type":"property"},{"label":"outerHeight","type":"property"},{"label":"OscillatorNode","type":"property"},{"label":"origin","type":"property"},{"label":"OrientationSensor","type":"property"},{"label":"Option","type":"property"},{"label":"opener","type":"property"},{"label":"openDatabase","type":"property"},{"label":"open","type":"property"},{"label":"onwheel","type":"property"},{"label":"onwebkittransitionend","type":"property"},{"label":"onwebkitanimationstart","type":"property"},{"label":"onwebkitanimationiteration","type":"property"},{"label":"onwebkitanimationend","type":"property"},{"label":"onwaiting","type":"property"},{"label":"onvolumechange","type":"property"},{"label":"onunload","type":"property"},{"label":"onunhandledrejection","type":"property"},{"label":"ontransitionend","type":"property"},{"label":"ontoggle","type":"property"},{"label":"ontimeupdate","type":"property"},{"label":"onsuspend","type":"property"},{"label":"onsubmit","type":"property"},{"label":"onstorage","type":"property"},{"label":"onstalled","type":"property"},{"label":"onselectstart","type":"property"},{"label":"onselectionchange","type":"property"},{"label":"onselect","type":"property"},{"label":"onseeking","type":"property"},{"label":"onseeked","type":"property"},{"label":"onsearch","type":"property"},{"label":"onscroll","type":"property"},{"label":"onresize","type":"property"},{"label":"onreset","type":"property"},{"label":"onrejectionhandled","type":"property"},{"label":"onratechange","type":"property"},{"label":"onprogress","type":"property"},{"label":"onpopstate","type":"property"},{"label":"onpointerup","type":"property"},{"label":"onpointerrawupdate","type":"property"},{"label":"onpointerover","type":"property"},{"label":"onpointerout","type":"property"},{"label":"onpointermove","type":"property"},{"label":"onpointerleave","type":"property"},{"label":"onpointerenter","type":"property"},{"label":"onpointerdown","type":"property"},{"label":"onpointercancel","type":"property"},{"label":"onplaying","type":"property"},{"label":"onplay","type":"property"},{"label":"onpause","type":"property"},{"label":"onpageshow","type":"property"},{"label":"onpagehide","type":"property"},{"label":"ononline","type":"property"},{"label":"onoffline","type":"property"},{"label":"onmousewheel","type":"property"},{"label":"onmouseup","type":"property"},{"label":"onmouseover","type":"property"},{"label":"onmouseout","type":"property"},{"label":"onmousemove","type":"property"},{"label":"onmouseleave","type":"property"},{"label":"onmouseenter","type":"property"},{"label":"onmousedown","type":"property"},{"label":"onmessageerror","type":"property"},{"label":"onmessage","type":"property"},{"label":"onlostpointercapture","type":"property"},{"label":"onloadstart","type":"property"},{"label":"onloadedmetadata","type":"property"},{"label":"onloadeddata","type":"property"},{"label":"onload","type":"property"},{"label":"onlanguagechange","type":"property"},{"label":"onkeyup","type":"property"},{"label":"onkeypress","type":"property"},{"label":"onkeydown","type":"property"},{"label":"oninvalid","type":"property"},{"label":"oninput","type":"property"},{"label":"onhashchange","type":"property"},{"label":"ongotpointercapture","type":"property"},{"label":"onformdata","type":"property"},{"label":"onfocus","type":"property"},{"label":"onerror","type":"property"},{"label":"onended","type":"property"},{"label":"onemptied","type":"property"},{"label":"ondurationchange","type":"property"},{"label":"ondrop","type":"property"},{"label":"ondragstart","type":"property"},{"label":"ondragover","type":"property"},{"label":"ondragleave","type":"property"},{"label":"ondragenter","type":"property"},{"label":"ondragend","type":"property"},{"label":"ondrag","type":"property"},{"label":"ondeviceorientationabsolute","type":"property"},{"label":"ondeviceorientation","type":"property"},{"label":"ondevicemotion","type":"property"},{"label":"ondblclick","type":"property"},{"label":"oncuechange","type":"property"},{"label":"oncontextmenu","type":"property"},{"label":"onclose","type":"property"},{"label":"onclick","type":"property"},{"label":"onchange","type":"property"},{"label":"oncanplaythrough","type":"property"},{"label":"oncanplay","type":"property"},{"label":"oncancel","type":"property"},{"label":"onblur","type":"property"},{"label":"onbeforeunload","type":"property"},{"label":"onbeforeprint","type":"property"},{"label":"onbeforeinstallprompt","type":"property"},{"label":"onauxclick","type":"property"},{"label":"onappinstalled","type":"property"},{"label":"onanimationstart","type":"property"},{"label":"onanimationiteration","type":"property"},{"label":"onanimationend","type":"property"},{"label":"onafterprint","type":"property"},{"label":"onabort","type":"property"},{"label":"OffscreenCanvasRenderingContext2D","type":"property"},{"label":"OffscreenCanvas","type":"property"},{"label":"offscreenBuffering","type":"property"},{"label":"OfflineAudioContext","type":"property"},{"label":"OfflineAudioCompletionEvent","type":"property"},{"label":"Object","type":"property"},{"label":"Number","type":"property"},{"label":"Notification","type":"property"},{"label":"nodeRequire","type":"property"},{"label":"NodeList","type":"property"},{"label":"NodeIterator","type":"property"},{"label":"NodeFilter","type":"property"},{"label":"Node","type":"property"},{"label":"NetworkInformation","type":"property"},{"label":"Navigator","type":"property"},{"label":"navigator","type":"property"},{"label":"NavigationPreloadManager","type":"property"},{"label":"NaN","type":"property"},{"label":"NamedNodeMap","type":"property"},{"label":"name","type":"property"},{"label":"MutationRecord","type":"property"},{"label":"MutationObserver","type":"property"},{"label":"MutationEvent","type":"property"},{"label":"moveTo","type":"property"},{"label":"moveBy","type":"property"},{"label":"MouseEvent","type":"property"},{"label":"MonacoEnvironment","type":"property"},{"label":"module","type":"property"},{"label":"MimeTypeArray","type":"property"},{"label":"MimeType","type":"property"},{"label":"MIDIPort","type":"property"},{"label":"MIDIOutputMap","type":"property"},{"label":"MIDIOutput","type":"property"},{"label":"MIDIMessageEvent","type":"property"},{"label":"MIDIInputMap","type":"property"},{"label":"MIDIInput","type":"property"},{"label":"MIDIConnectionEvent","type":"property"},{"label":"MIDIAccess","type":"property"},{"label":"MessagePort","type":"property"},{"label":"MessageEvent","type":"property"},{"label":"MessageChannel","type":"property"},{"label":"menubar","type":"property"},{"label":"MediaStreamTrackEvent","type":"property"},{"label":"MediaStreamTrack","type":"property"},{"label":"MediaStreamEvent","type":"property"},{"label":"MediaStreamAudioSourceNode","type":"property"},{"label":"MediaStreamAudioDestinationNode","type":"property"},{"label":"MediaStream","type":"property"},{"label":"MediaSource","type":"property"},{"label":"MediaSettingsRange","type":"property"},{"label":"MediaSession","type":"property"},{"label":"MediaRecorder","type":"property"},{"label":"MediaQueryListEvent","type":"property"},{"label":"MediaQueryList","type":"property"},{"label":"MediaMetadata","type":"property"},{"label":"MediaList","type":"property"},{"label":"MediaKeySystemAccess","type":"property"},{"label":"MediaKeyStatusMap","type":"property"},{"label":"MediaKeySession","type":"property"},{"label":"MediaKeys","type":"property"},{"label":"MediaKeyMessageEvent","type":"property"},{"label":"MediaError","type":"property"},{"label":"MediaEncryptedEvent","type":"property"},{"label":"MediaElementAudioSourceNode","type":"property"},{"label":"MediaDevices","type":"property"},{"label":"MediaDeviceInfo","type":"property"},{"label":"MediaCapabilities","type":"property"},{"label":"Math","type":"property"},{"label":"matchMedia","type":"property"},{"label":"Map","type":"property"},{"label":"LockManager","type":"property"},{"label":"Lock","type":"property"},{"label":"locationbar","type":"property"},{"label":"Location","type":"property"},{"label":"location","type":"property"},{"label":"localStorage","type":"property"},{"label":"LinearAccelerationSensor","type":"property"},{"label":"length","type":"property"},{"label":"LayoutShift","type":"property"},{"label":"LargestContentfulPaint","type":"property"},{"label":"KeyframeEffect","type":"property"},{"label":"KeyboardLayoutMap","type":"property"},{"label":"KeyboardEvent","type":"property"},{"label":"Keyboard","type":"property"},{"label":"JSON","type":"property"},{"label":"isSecureContext","type":"property"},{"label":"isNaN","type":"property"},{"label":"isFinite","type":"property"},{"label":"Intl","type":"property"},{"label":"IntersectionObserverEntry","type":"property"},{"label":"IntersectionObserver","type":"property"},{"label":"Int8Array","type":"property"},{"label":"Int32Array","type":"property"},{"label":"Int16Array","type":"property"},{"label":"InputEvent","type":"property"},{"label":"InputDeviceInfo","type":"property"},{"label":"InputDeviceCapabilities","type":"property"},{"label":"innerWidth","type":"property"},{"label":"innerHeight","type":"property"},{"label":"Infinity","type":"property"},{"label":"indexedDB","type":"property"},{"label":"ImageData","type":"property"},{"label":"ImageCapture","type":"property"},{"label":"ImageBitmapRenderingContext","type":"property"},{"label":"ImageBitmap","type":"property"},{"label":"Image","type":"property"},{"label":"IIRFilterNode","type":"property"},{"label":"IdleDeadline","type":"property"},{"label":"IDBVersionChangeEvent","type":"property"},{"label":"IDBTransaction","type":"property"},{"label":"IDBRequest","type":"property"},{"label":"IDBOpenDBRequest","type":"property"},{"label":"IDBObjectStore","type":"property"},{"label":"IDBKeyRange","type":"property"},{"label":"IDBIndex","type":"property"},{"label":"IDBFactory","type":"property"},{"label":"IDBDatabase","type":"property"},{"label":"IDBCursorWithValue","type":"property"},{"label":"IDBCursor","type":"property"},{"label":"HTMLVideoElement","type":"property"},{"label":"HTMLUnknownElement","type":"property"},{"label":"HTMLUListElement","type":"property"},{"label":"HTMLTrackElement","type":"property"},{"label":"HTMLTitleElement","type":"property"},{"label":"HTMLTimeElement","type":"property"},{"label":"HTMLTextAreaElement","type":"property"},{"label":"HTMLTemplateElement","type":"property"},{"label":"HTMLTableSectionElement","type":"property"},{"label":"HTMLTableRowElement","type":"property"},{"label":"HTMLTableElement","type":"property"},{"label":"HTMLTableColElement","type":"property"},{"label":"HTMLTableCellElement","type":"property"},{"label":"HTMLTableCaptionElement","type":"property"},{"label":"HTMLStyleElement","type":"property"},{"label":"HTMLSpanElement","type":"property"},{"label":"HTMLSourceElement","type":"property"},{"label":"HTMLSlotElement","type":"property"},{"label":"HTMLShadowElement","type":"property"},{"label":"HTMLSelectElement","type":"property"},{"label":"HTMLScriptElement","type":"property"},{"label":"HTMLQuoteElement","type":"property"},{"label":"HTMLProgressElement","type":"property"},{"label":"HTMLPreElement","type":"property"},{"label":"HTMLPictureElement","type":"property"},{"label":"HTMLParamElement","type":"property"},{"label":"HTMLParagraphElement","type":"property"},{"label":"HTMLOutputElement","type":"property"},{"label":"HTMLOptionsCollection","type":"property"},{"label":"HTMLOptionElement","type":"property"},{"label":"HTMLOptGroupElement","type":"property"},{"label":"HTMLOListElement","type":"property"},{"label":"HTMLObjectElement","type":"property"},{"label":"HTMLModElement","type":"property"},{"label":"HTMLMeterElement","type":"property"},{"label":"HTMLMetaElement","type":"property"},{"label":"HTMLMenuElement","type":"property"},{"label":"HTMLMediaElement","type":"property"},{"label":"HTMLMarqueeElement","type":"property"},{"label":"HTMLMapElement","type":"property"},{"label":"HTMLLinkElement","type":"property"},{"label":"HTMLLIElement","type":"property"},{"label":"HTMLLegendElement","type":"property"},{"label":"HTMLLabelElement","type":"property"},{"label":"HTMLInputElement","type":"property"},{"label":"HTMLImageElement","type":"property"},{"label":"HTMLIFrameElement","type":"property"},{"label":"HTMLHtmlElement","type":"property"},{"label":"HTMLHRElement","type":"property"},{"label":"HTMLHeadingElement","type":"property"},{"label":"HTMLHeadElement","type":"property"},{"label":"HTMLFrameSetElement","type":"property"},{"label":"HTMLFrameElement","type":"property"},{"label":"HTMLFormElement","type":"property"},{"label":"HTMLFormControlsCollection","type":"property"},{"label":"HTMLFontElement","type":"property"},{"label":"HTMLFieldSetElement","type":"property"},{"label":"HTMLEmbedElement","type":"property"},{"label":"HTMLElement","type":"property"},{"label":"HTMLDocument","type":"property"},{"label":"HTMLDListElement","type":"property"},{"label":"HTMLDivElement","type":"property"},{"label":"HTMLDirectoryElement","type":"property"},{"label":"HTMLDialogElement","type":"property"},{"label":"HTMLDetailsElement","type":"property"},{"label":"HTMLDataListElement","type":"property"},{"label":"HTMLDataElement","type":"property"},{"label":"HTMLContentElement","type":"property"},{"label":"HTMLCollection","type":"property"},{"label":"HTMLCanvasElement","type":"property"},{"label":"HTMLButtonElement","type":"property"},{"label":"HTMLBRElement","type":"property"},{"label":"HTMLBodyElement","type":"property"},{"label":"HTMLBaseElement","type":"property"},{"label":"HTMLAudioElement","type":"property"},{"label":"HTMLAreaElement","type":"property"},{"label":"HTMLAnchorElement","type":"property"},{"label":"HTMLAllCollection","type":"property"},{"label":"History","type":"property"},{"label":"history","type":"property"},{"label":"Headers","type":"property"},{"label":"HashChangeEvent","type":"property"},{"label":"Gyroscope","type":"property"},{"label":"globalThis","type":"property"},{"label":"set GLOBAL","type":"property"},{"label":"get GLOBAL","type":"property"},{"label":"global","type":"property"},{"label":"getSelection","type":"property"},{"label":"getLazyEnv","type":"property"},{"label":"getComputedStyle","type":"property"},{"label":"GamepadHapticActuator","type":"property"},{"label":"GamepadEvent","type":"property"},{"label":"GamepadButton","type":"property"},{"label":"Gamepad","type":"property"},{"label":"GainNode","type":"property"},{"label":"Function","type":"property"},{"label":"frames","type":"property"},{"label":"frameElement","type":"property"},{"label":"FormDataEvent","type":"property"},{"label":"FormData","type":"property"},{"label":"FontFaceSetLoadEvent","type":"property"},{"label":"FontFace","type":"property"},{"label":"FocusEvent","type":"property"},{"label":"focus","type":"property"},{"label":"Float64Array","type":"property"},{"label":"Float32Array","type":"property"},{"label":"find","type":"property"},{"label":"FileReader","type":"property"},{"label":"FileList","type":"property"},{"label":"File","type":"property"},{"label":"fetch","type":"property"},{"label":"FederatedCredential","type":"property"},{"label":"External","type":"property"},{"label":"external","type":"property"},{"label":"EventTarget","type":"property"},{"label":"EventSource","type":"property"},{"label":"Event","type":"property"},{"label":"event","type":"property"},{"label":"EvalError","type":"property"},{"label":"eval","type":"property"},{"label":"escape","type":"property"},{"label":"ErrorEvent","type":"property"},{"label":"Error","type":"property"},{"label":"EnterPictureInPictureEvent","type":"property"},{"label":"encodeURIComponent","type":"property"},{"label":"encodeURI","type":"property"},{"label":"ElementInternals","type":"property"},{"label":"Element","type":"property"},{"label":"DynamicsCompressorNode","type":"property"},{"label":"DragEvent","type":"property"},{"label":"DOMTokenList","type":"property"},{"label":"DOMStringMap","type":"property"},{"label":"DOMStringList","type":"property"},{"label":"DOMRectReadOnly","type":"property"},{"label":"DOMRectList","type":"property"},{"label":"DOMRect","type":"property"},{"label":"DOMQuad","type":"property"},{"label":"DOMPointReadOnly","type":"property"},{"label":"DOMPoint","type":"property"},{"label":"DOMParser","type":"property"},{"label":"DOMMatrixReadOnly","type":"property"},{"label":"DOMMatrix","type":"property"},{"label":"DOMImplementation","type":"property"},{"label":"DOMException","type":"property"},{"label":"DOMError","type":"property"},{"label":"DocumentType","type":"property"},{"label":"DocumentFragment","type":"property"},{"label":"Document","type":"property"},{"label":"document","type":"property"},{"label":"devicePixelRatio","type":"property"},{"label":"DeviceOrientationEvent","type":"property"},{"label":"DeviceMotionEventRotationRate","type":"property"},{"label":"DeviceMotionEventAcceleration","type":"property"},{"label":"DeviceMotionEvent","type":"property"},{"label":"DelayNode","type":"property"},{"label":"defaultStatus","type":"property"},{"label":"defaultstatus","type":"property"},{"label":"decodeURIComponent","type":"property"},{"label":"decodeURI","type":"property"},{"label":"Date","type":"property"},{"label":"DataView","type":"property"},{"label":"DataTransferItemList","type":"property"},{"label":"DataTransferItem","type":"property"},{"label":"DataTransfer","type":"property"},{"label":"CustomEvent","type":"property"},{"label":"customElements","type":"property"},{"label":"CustomElementRegistry","type":"property"},{"label":"CSSVariableReferenceValue","type":"property"},{"label":"CSSUnparsedValue","type":"property"},{"label":"CSSUnitValue","type":"property"},{"label":"CSSTranslate","type":"property"},{"label":"CSSTransformValue","type":"property"},{"label":"CSSTransformComponent","type":"property"},{"label":"CSSSupportsRule","type":"property"},{"label":"CSSStyleValue","type":"property"},{"label":"CSSStyleSheet","type":"property"},{"label":"CSSStyleRule","type":"property"},{"label":"CSSStyleDeclaration","type":"property"},{"label":"CSSSkewY","type":"property"},{"label":"CSSSkewX","type":"property"},{"label":"CSSSkew","type":"property"},{"label":"CSSScale","type":"property"},{"label":"CSSRuleList","type":"property"},{"label":"CSSRule","type":"property"},{"label":"CSSRotate","type":"property"},{"label":"CSSPositionValue","type":"property"},{"label":"CSSPerspective","type":"property"},{"label":"CSSPageRule","type":"property"},{"label":"CSSNumericValue","type":"property"},{"label":"CSSNumericArray","type":"property"},{"label":"CSSNamespaceRule","type":"property"},{"label":"CSSMediaRule","type":"property"},{"label":"CSSMatrixComponent","type":"property"},{"label":"CSSMathValue","type":"property"},{"label":"CSSMathSum","type":"property"},{"label":"CSSMathProduct","type":"property"},{"label":"CSSMathNegate","type":"property"},{"label":"CSSMathMin","type":"property"},{"label":"CSSMathMax","type":"property"},{"label":"CSSMathInvert","type":"property"},{"label":"CSSKeywordValue","type":"property"},{"label":"CSSKeyframesRule","type":"property"},{"label":"CSSKeyframeRule","type":"property"},{"label":"CSSImportRule","type":"property"},{"label":"CSSImageValue","type":"property"},{"label":"CSSGroupingRule","type":"property"},{"label":"CSSFontFaceRule","type":"property"},{"label":"CSSConditionRule","type":"property"},{"label":"CSS","type":"property"},{"label":"CryptoKey","type":"property"},{"label":"Crypto","type":"property"},{"label":"crypto","type":"property"},{"label":"CredentialsContainer","type":"property"},{"label":"Credential","type":"property"},{"label":"createImageBitmap","type":"property"},{"label":"CountQueuingStrategy","type":"property"},{"label":"ConvolverNode","type":"property"},{"label":"ConstantSourceNode","type":"property"},{"label":"console","type":"property"},{"label":"confirm","type":"property"},{"label":"CompositionEvent","type":"property"},{"label":"Comment","type":"property"},{"label":"CloseEvent","type":"property"},{"label":"closed","type":"property"},{"label":"close","type":"property"},{"label":"ClipboardItem","type":"property"},{"label":"ClipboardEvent","type":"property"},{"label":"Clipboard","type":"property"},{"label":"clientInformation","type":"property"},{"label":"clearTimeout","type":"property"},{"label":"clearInterval","type":"property"},{"label":"clearImmediate","type":"property"},{"label":"CharacterData","type":"property"},{"label":"ChannelSplitterNode","type":"property"},{"label":"ChannelMergerNode","type":"property"},{"label":"CDATASection","type":"property"},{"label":"captureEvents","type":"property"},{"label":"CanvasRenderingContext2D","type":"property"},{"label":"CanvasPattern","type":"property"},{"label":"CanvasGradient","type":"property"},{"label":"CanvasCaptureMediaStreamTrack","type":"property"},{"label":"cancelIdleCallback","type":"property"},{"label":"cancelAnimationFrame","type":"property"},{"label":"CacheStorage","type":"property"},{"label":"caches","type":"property"},{"label":"Cache","type":"property"},{"label":"ByteLengthQueuingStrategy","type":"property"},{"label":"set Buffer","type":"property"},{"label":"get Buffer","type":"property"},{"label":"btoa","type":"property"},{"label":"BroadcastChannel","type":"property"},{"label":"Boolean","type":"property"},{"label":"blur","type":"property"},{"label":"BluetoothUUID","type":"property"},{"label":"BluetoothRemoteGATTService","type":"property"},{"label":"BluetoothRemoteGATTServer","type":"property"},{"label":"BluetoothRemoteGATTDescriptor","type":"property"},{"label":"BluetoothRemoteGATTCharacteristic","type":"property"},{"label":"BluetoothDevice","type":"property"},{"label":"BluetoothCharacteristicProperties","type":"property"},{"label":"Bluetooth","type":"property"},{"label":"BlobEvent","type":"property"},{"label":"Blob","type":"property"},{"label":"BiquadFilterNode","type":"property"},{"label":"BigUint64Array","type":"property"},{"label":"BigInt64Array","type":"property"},{"label":"BigInt","type":"property"},{"label":"BeforeUnloadEvent","type":"property"},{"label":"BeforeInstallPromptEvent","type":"property"},{"label":"BatteryManager","type":"property"},{"label":"BaseAudioContext","type":"property"},{"label":"BarProp","type":"property"},{"label":"BackgroundFetchRegistration","type":"property"},{"label":"BackgroundFetchRecord","type":"property"},{"label":"BackgroundFetchManager","type":"property"},{"label":"AuthenticatorResponse","type":"property"},{"label":"AuthenticatorAttestationResponse","type":"property"},{"label":"AuthenticatorAssertionResponse","type":"property"},{"label":"AudioWorkletNode","type":"property"},{"label":"AudioWorklet","type":"property"},{"label":"AudioScheduledSourceNode","type":"property"},{"label":"AudioProcessingEvent","type":"property"},{"label":"AudioParamMap","type":"property"},{"label":"AudioParam","type":"property"},{"label":"AudioNode","type":"property"},{"label":"AudioListener","type":"property"},{"label":"AudioDestinationNode","type":"property"},{"label":"AudioContext","type":"property"},{"label":"AudioBufferSourceNode","type":"property"},{"label":"AudioBuffer","type":"property"},{"label":"Audio","type":"property"},{"label":"Attr","type":"property"},{"label":"Atomics","type":"property"},{"label":"atob","type":"property"},{"label":"ArrayBuffer","type":"property"},{"label":"Array","type":"property"},{"label":"ApplicationCacheErrorEvent","type":"property"},{"label":"ApplicationCache","type":"property"},{"label":"applicationCache","type":"property"},{"label":"AnimationEvent","type":"property"},{"label":"AnimationEffect","type":"property"},{"label":"Animation","type":"property"},{"label":"AnalyserNode","type":"property"},{"label":"alert","type":"property"},{"label":"Accelerometer","type":"property"},{"label":"AbsoluteOrientationSensor","type":"property"},{"label":"AbortSignal","type":"property"},{"label":"AbortController","type":"property"},{"label":"_performanceEntries","type":"property"},{"label":"__filename","type":"property"},{"label":"__dirname","type":"property"},{"label":"perf","type":"property"},{"label":"bootstrapWindow","type":"property"},{"label":"nls","type":"property"},{"label":"event_1","type":"property"},{"label":"async_1","type":"property"},{"label":"arrays","type":"property"},{"label":"this","type":"property"},{"label":"target","type":"property"},{"label":"shouldPreventDefault","type":"property"},{"label":"resolveResult","type":"property"},{"label":"keypressLabel","type":"property"},{"label":"keybinding","type":"property"},{"label":"firstPart","type":"property"},{"label":"currentChord","type":"property"},{"label":"contextValue","type":"property"},{"label":"screen","sortText":"~~screen","type":"variable"},{"label":"screenLeft","sortText":"~~screenLeft","type":"variable"},{"label":"screenTop","sortText":"~~screenTop","type":"variable"},{"label":"screenX","sortText":"~~screenX","type":"variable"},{"label":"screenY","sortText":"~~screenY","type":"variable"},{"label":"scroll","sortText":"~~scroll","type":"function"},{"label":"scrollBy","sortText":"~~scrollBy","type":"function"},{"label":"scrollTo","sortText":"~~scrollTo","type":"function"},{"label":"scrollX","sortText":"~~scrollX","type":"variable"},{"label":"scrollY","sortText":"~~scrollY","type":"variable"},{"label":"scrollbars","sortText":"~~scrollbars","type":"variable"},{"label":"self","sortText":"~~self","type":"variable"},{"label":"sessionStorage","sortText":"~~sessionStorage","type":"variable"},{"label":"setImmediate","sortText":"~~setImmediate","type":"function"},{"label":"setInterval","sortText":"~~setInterval","type":"function"},{"label":"setTimeout","sortText":"~~setTimeout","type":"function"},{"label":"showPartsSplash","sortText":"~~showPartsSplash","type":"function"},{"label":"speechSynthesis","sortText":"~~speechSynthesis","type":"variable"},{"label":"status","sortText":"~~status","type":"variable"},{"label":"statusbar","sortText":"~~statusbar","type":"variable"},{"label":"stop","sortText":"~~stop","type":"function"},{"label":"styleMedia","sortText":"~~styleMedia","type":"variable"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425898052,"metadata":{"connectionId":0,"message":{"id":118,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425899582,"metadata":{"connectionId":1,"message":{"seq":3449,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"variables":{"operation":"variables","totalTime":21.3,"max":21.3,"avg":21.3,"stddev":null,"count":1,"failed":0},"variables.errors":[],"completions":{"operation":"completions","totalTime":300.6,"max":289,"avg":150.3,"stddev":196.2,"count":2,"failed":0},"completions.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425899613,"metadata":{"connectionId":1,"message":{"command":"completions","arguments":{"frameId":451,"text":"JSON.","column":6,"line":1},"type":"request","seq":53}},"level":0} {"tag":"cdp.send","timestamp":1588425899615,"metadata":{"connectionId":0,"message":{"id":119,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"(JSON)","objectGroup":"console","silent":true,"throwOnSideEffect":false,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425899616,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1617","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":1,"hash":"3a70ef780030e3353ed7f25dcd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425899616,"metadata":{"connectionId":0,"message":{"id":119,"result":{"result":{"type":"object","className":"JSON","description":"JSON","objectId":"{\"injectedScriptId\":1,\"id\":949}"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425899618,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425899619,"metadata":{"connectionId":1,"message":{"seq":3450,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756702","path":"<eval>/VM633756702","sourceReference":633756702}}}},"level":0} {"tag":"cdp.send","timestamp":1588425899619,"metadata":{"connectionId":0,"message":{"id":120,"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"function(e,t,r){const n=r?\"variable\":\"property\",i=(e,t,i)=>{if(\"function\"!==t)return n;if(\"constructor\"===e)return\"class\";const a=String(i);return a.startsWith(\"class \")||a.includes(\"[native code]\")&&/^[A-Z]/.test(e)?\"class\":r?\"function\":\"method\"},a=[],o=new Set;let s=\"~\",c=void 0===e?this:e;for(;null!=c;c=c.__proto__){s+=\"~\";const e=Object.getOwnPropertyNames(c).filter(e=>e.startsWith(t)&&!e.match(/^\\d+$/));for(const t of e){if(o.has(t))continue;o.add(t);const e=Object.getOwnPropertyDescriptor(c,t);let r=n;try{r=i(t,typeof(null==e?void 0:e.value),c[t])}catch(e){}a.push({label:t,sortText:s+t.replace(/^_+/,e=>\"{\".repeat(e.length)),type:r})}r=!1}return{result:a,isArray:this instanceof Array}}","arguments":[{},{"value":""},{"value":false}],"objectId":"{\"injectedScriptId\":1,\"id\":949}","returnByValue":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425899622,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1620","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":701,"executionContextId":1,"hash":"045dbea2708b71047124f11f2c93e91c2ae896dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":701,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425899622,"metadata":{"connectionId":0,"message":{"id":120,"result":{"result":{"type":"object","value":{"result":[{"label":"parse","sortText":"~~parse","type":"method"},{"label":"stringify","sortText":"~~stringify","type":"method"},{"label":"constructor","sortText":"~~~constructor","type":"class"},{"label":"__defineGetter__","sortText":"~~~{{defineGetter__","type":"method"},{"label":"__defineSetter__","sortText":"~~~{{defineSetter__","type":"method"},{"label":"hasOwnProperty","sortText":"~~~hasOwnProperty","type":"method"},{"label":"__lookupGetter__","sortText":"~~~{{lookupGetter__","type":"method"},{"label":"__lookupSetter__","sortText":"~~~{{lookupSetter__","type":"method"},{"label":"isPrototypeOf","sortText":"~~~isPrototypeOf","type":"method"},{"label":"propertyIsEnumerable","sortText":"~~~propertyIsEnumerable","type":"method"},{"label":"toString","sortText":"~~~toString","type":"method"},{"label":"valueOf","sortText":"~~~valueOf","type":"method"},{"label":"__proto__","sortText":"~~~{{proto__","type":"property"},{"label":"toLocaleString","sortText":"~~~toLocaleString","type":"method"}],"isArray":false}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425899623,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425899623,"metadata":{"connectionId":1,"message":{"seq":3451,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756703","path":"<eval>/VM633756703","sourceReference":633756703}}}},"level":0} {"tag":"cdp.send","timestamp":1588425899623,"metadata":{"connectionId":0,"message":{"id":121,"method":"Runtime.releaseObject","params":{"objectId":"{\"injectedScriptId\":1,\"id\":949}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425899623,"metadata":{"connectionId":1,"message":{"seq":3452,"type":"response","request_seq":53,"command":"completions","success":true,"body":{"targets":[{"label":"parse","sortText":"~~parse","type":"method"},{"label":"stringify","sortText":"~~stringify","type":"method"},{"label":"constructor","sortText":"~~~constructor","type":"class"},{"label":"hasOwnProperty","sortText":"~~~hasOwnProperty","type":"method"},{"label":"isPrototypeOf","sortText":"~~~isPrototypeOf","type":"method"},{"label":"propertyIsEnumerable","sortText":"~~~propertyIsEnumerable","type":"method"},{"label":"toLocaleString","sortText":"~~~toLocaleString","type":"method"},{"label":"toString","sortText":"~~~toString","type":"method"},{"label":"valueOf","sortText":"~~~valueOf","type":"method"},{"label":"__defineGetter__","sortText":"~~~{{defineGetter__","type":"method"},{"label":"__defineSetter__","sortText":"~~~{{defineSetter__","type":"method"},{"label":"__lookupGetter__","sortText":"~~~{{lookupGetter__","type":"method"},{"label":"__lookupSetter__","sortText":"~~~{{lookupSetter__","type":"method"},{"label":"__proto__","sortText":"~~~{{proto__","type":"property"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425899624,"metadata":{"connectionId":0,"message":{"id":121,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425902359,"metadata":{"connectionId":1,"message":{"command":"completions","arguments":{"frameId":451,"text":"JSON.stringify(c)","column":17,"line":1},"type":"request","seq":54}},"level":0} {"tag":"cdp.send","timestamp":1588425902360,"metadata":{"connectionId":0,"message":{"id":122,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"(self)","objectGroup":"console","silent":true,"throwOnSideEffect":false,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425902361,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1621","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":1,"hash":"338fef78819848be36328c15cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425902361,"metadata":{"connectionId":0,"message":{"id":122,"result":{"result":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":950}"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425902362,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425902363,"metadata":{"connectionId":1,"message":{"seq":3453,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756704","path":"<eval>/VM633756704","sourceReference":633756704}}}},"level":0} {"tag":"cdp.send","timestamp":1588425902363,"metadata":{"connectionId":0,"message":{"id":123,"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"function(e,t,r){const n=r?\"variable\":\"property\",i=(e,t,i)=>{if(\"function\"!==t)return n;if(\"constructor\"===e)return\"class\";const a=String(i);return a.startsWith(\"class \")||a.includes(\"[native code]\")&&/^[A-Z]/.test(e)?\"class\":r?\"function\":\"method\"},a=[],o=new Set;let s=\"~\",c=void 0===e?this:e;for(;null!=c;c=c.__proto__){s+=\"~\";const e=Object.getOwnPropertyNames(c).filter(e=>e.startsWith(t)&&!e.match(/^\\d+$/));for(const t of e){if(o.has(t))continue;o.add(t);const e=Object.getOwnPropertyDescriptor(c,t);let r=n;try{r=i(t,typeof(null==e?void 0:e.value),c[t])}catch(e){}a.push({label:t,sortText:s+t.replace(/^_+/,e=>\"{\".repeat(e.length)),type:r})}r=!1}return{result:a,isArray:this instanceof Array}}","arguments":[{},{"value":"c"},{"value":true}],"objectId":"{\"injectedScriptId\":1,\"id\":950}","returnByValue":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425902366,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1624","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":701,"executionContextId":1,"hash":"045dbea2708b71047124f11f2c93e91c2ae896dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":701,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425902366,"metadata":{"connectionId":0,"message":{"id":123,"result":{"result":{"type":"object","value":{"result":[{"label":"console","sortText":"~~console","type":"variable"},{"label":"close","sortText":"~~close","type":"function"},{"label":"closed","sortText":"~~closed","type":"variable"},{"label":"customElements","sortText":"~~customElements","type":"variable"},{"label":"clientInformation","sortText":"~~clientInformation","type":"variable"},{"label":"confirm","sortText":"~~confirm","type":"function"},{"label":"cancelAnimationFrame","sortText":"~~cancelAnimationFrame","type":"function"},{"label":"captureEvents","sortText":"~~captureEvents","type":"function"},{"label":"cancelIdleCallback","sortText":"~~cancelIdleCallback","type":"function"},{"label":"clearTimeout","sortText":"~~clearTimeout","type":"function"},{"label":"clearInterval","sortText":"~~clearInterval","type":"function"},{"label":"createImageBitmap","sortText":"~~createImageBitmap","type":"function"},{"label":"crypto","sortText":"~~crypto","type":"variable"},{"label":"caches","sortText":"~~caches","type":"variable"},{"label":"clearImmediate","sortText":"~~clearImmediate","type":"function"},{"label":"constructor","sortText":"~~~constructor","type":"class"}],"isArray":false}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425902368,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425902368,"metadata":{"connectionId":1,"message":{"seq":3454,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756705","path":"<eval>/VM633756705","sourceReference":633756705}}}},"level":0} {"tag":"cdp.send","timestamp":1588425902368,"metadata":{"connectionId":0,"message":{"id":124,"method":"Runtime.releaseObject","params":{"objectId":"{\"injectedScriptId\":1,\"id\":950}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425902369,"metadata":{"connectionId":1,"message":{"seq":3455,"type":"response","request_seq":54,"command":"completions","success":true,"body":{"targets":[{"label":"__proto__","type":"property"},{"label":"XSLTProcessor","type":"property"},{"label":"XPathResult","type":"property"},{"label":"XPathExpression","type":"property"},{"label":"XPathEvaluator","type":"property"},{"label":"XMLSerializer","type":"property"},{"label":"XMLHttpRequestUpload","type":"property"},{"label":"XMLHttpRequestEventTarget","type":"property"},{"label":"XMLHttpRequest","type":"property"},{"label":"XMLDocument","type":"property"},{"label":"WritableStreamDefaultWriter","type":"property"},{"label":"WritableStream","type":"property"},{"label":"Worklet","type":"property"},{"label":"Worker","type":"property"},{"label":"Window","type":"property"},{"label":"window","type":"property"},{"label":"WheelEvent","type":"property"},{"label":"WebView","type":"property"},{"label":"WebSocket","type":"property"},{"label":"webkitURL","type":"property"},{"label":"webkitStorageInfo","type":"property"},{"label":"webkitSpeechRecognitionEvent","type":"property"},{"label":"webkitSpeechRecognitionError","type":"property"},{"label":"webkitSpeechRecognition","type":"property"},{"label":"webkitSpeechGrammarList","type":"property"},{"label":"webkitSpeechGrammar","type":"property"},{"label":"webkitRTCPeerConnection","type":"property"},{"label":"webkitResolveLocalFileSystemURL","type":"property"},{"label":"webkitRequestFileSystem","type":"property"},{"label":"webkitRequestAnimationFrame","type":"property"},{"label":"WebKitMutationObserver","type":"property"},{"label":"webkitMediaStream","type":"property"},{"label":"WebKitCSSMatrix","type":"property"},{"label":"webkitCancelAnimationFrame","type":"property"},{"label":"WebGLVertexArrayObject","type":"property"},{"label":"WebGLUniformLocation","type":"property"},{"label":"WebGLTransformFeedback","type":"property"},{"label":"WebGLTexture","type":"property"},{"label":"WebGLSync","type":"property"},{"label":"WebGLShaderPrecisionFormat","type":"property"},{"label":"WebGLShader","type":"property"},{"label":"WebGLSampler","type":"property"},{"label":"WebGLRenderingContext","type":"property"},{"label":"WebGLRenderbuffer","type":"property"},{"label":"WebGLQuery","type":"property"},{"label":"WebGLProgram","type":"property"},{"label":"WebGLFramebuffer","type":"property"},{"label":"WebGLContextEvent","type":"property"},{"label":"WebGLBuffer","type":"property"},{"label":"WebGLActiveInfo","type":"property"},{"label":"WebGL2RenderingContext","type":"property"},{"label":"WebAssembly","type":"property"},{"label":"WeakSet","type":"property"},{"label":"WeakMap","type":"property"},{"label":"WaveShaperNode","type":"property"},{"label":"VTTCue","type":"property"},{"label":"VisualViewport","type":"property"},{"label":"visualViewport","type":"property"},{"label":"ValidityState","type":"property"},{"label":"UserActivation","type":"property"},{"label":"USBOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferPacket","type":"property"},{"label":"USBIsochronousInTransferResult","type":"property"},{"label":"USBIsochronousInTransferPacket","type":"property"},{"label":"USBInTransferResult","type":"property"},{"label":"USBInterface","type":"property"},{"label":"USBEndpoint","type":"property"},{"label":"USBDevice","type":"property"},{"label":"USBConnectionEvent","type":"property"},{"label":"USBConfiguration","type":"property"},{"label":"USBAlternateInterface","type":"property"},{"label":"USB","type":"property"},{"label":"URLSearchParams","type":"property"},{"label":"URL","type":"property"},{"label":"URIError","type":"property"},{"label":"unescape","type":"property"},{"label":"undefined","type":"property"},{"label":"Uint8ClampedArray","type":"property"},{"label":"Uint8Array","type":"property"},{"label":"Uint32Array","type":"property"},{"label":"Uint16Array","type":"property"},{"label":"UIEvent","type":"property"},{"label":"TypeError","type":"property"},{"label":"TreeWalker","type":"property"},{"label":"TransitionEvent","type":"property"},{"label":"TransformStream","type":"property"},{"label":"TrackEvent","type":"property"},{"label":"TouchList","type":"property"},{"label":"TouchEvent","type":"property"},{"label":"Touch","type":"property"},{"label":"top","type":"property"},{"label":"toolbar","type":"property"},{"label":"TimeRanges","type":"property"},{"label":"TextTrackList","type":"property"},{"label":"TextTrackCueList","type":"property"},{"label":"TextTrackCue","type":"property"},{"label":"TextTrack","type":"property"},{"label":"TextMetrics","type":"property"},{"label":"TextEvent","type":"property"},{"label":"TextEncoderStream","type":"property"},{"label":"TextEncoder","type":"property"},{"label":"TextDecoderStream","type":"property"},{"label":"TextDecoder","type":"property"},{"label":"Text","type":"property"},{"label":"TaskAttributionTiming","type":"property"},{"label":"SyntaxError","type":"property"},{"label":"SyncManager","type":"property"},{"label":"Symbol(Symbol.toStringTag)","type":"property"},{"label":"get Symbol(graceful-fs.queue)","type":"property"},{"label":"Symbol","type":"property"},{"label":"SVGViewElement","type":"property"},{"label":"SVGUseElement","type":"property"},{"label":"SVGUnitTypes","type":"property"},{"label":"SVGTSpanElement","type":"property"},{"label":"SVGTransformList","type":"property"},{"label":"SVGTransform","type":"property"},{"label":"SVGTitleElement","type":"property"},{"label":"SVGTextPositioningElement","type":"property"},{"label":"SVGTextPathElement","type":"property"},{"label":"SVGTextElement","type":"property"},{"label":"SVGTextContentElement","type":"property"},{"label":"SVGSymbolElement","type":"property"},{"label":"SVGSwitchElement","type":"property"},{"label":"SVGSVGElement","type":"property"},{"label":"SVGStyleElement","type":"property"},{"label":"SVGStringList","type":"property"},{"label":"SVGStopElement","type":"property"},{"label":"SVGSetElement","type":"property"},{"label":"SVGScriptElement","type":"property"},{"label":"SVGRectElement","type":"property"},{"label":"SVGRect","type":"property"},{"label":"SVGRadialGradientElement","type":"property"},{"label":"SVGPreserveAspectRatio","type":"property"},{"label":"SVGPolylineElement","type":"property"},{"label":"SVGPolygonElement","type":"property"},{"label":"SVGPointList","type":"property"},{"label":"SVGPoint","type":"property"},{"label":"SVGPatternElement","type":"property"},{"label":"SVGPathElement","type":"property"},{"label":"SVGNumberList","type":"property"},{"label":"SVGNumber","type":"property"},{"label":"SVGMPathElement","type":"property"},{"label":"SVGMetadataElement","type":"property"},{"label":"SVGMatrix","type":"property"},{"label":"SVGMaskElement","type":"property"},{"label":"SVGMarkerElement","type":"property"},{"label":"SVGLineElement","type":"property"},{"label":"SVGLinearGradientElement","type":"property"},{"label":"SVGLengthList","type":"property"},{"label":"SVGLength","type":"property"},{"label":"SVGImageElement","type":"property"},{"label":"SVGGraphicsElement","type":"property"},{"label":"SVGGradientElement","type":"property"},{"label":"SVGGeometryElement","type":"property"},{"label":"SVGGElement","type":"property"},{"label":"SVGForeignObjectElement","type":"property"},{"label":"SVGFilterElement","type":"property"},{"label":"SVGFETurbulenceElement","type":"property"},{"label":"SVGFETileElement","type":"property"},{"label":"SVGFESpotLightElement","type":"property"},{"label":"SVGFESpecularLightingElement","type":"property"},{"label":"SVGFEPointLightElement","type":"property"},{"label":"SVGFEOffsetElement","type":"property"},{"label":"SVGFEMorphologyElement","type":"property"},{"label":"SVGFEMergeNodeElement","type":"property"},{"label":"SVGFEMergeElement","type":"property"},{"label":"SVGFEImageElement","type":"property"},{"label":"SVGFEGaussianBlurElement","type":"property"},{"label":"SVGFEFuncRElement","type":"property"},{"label":"SVGFEFuncGElement","type":"property"},{"label":"SVGFEFuncBElement","type":"property"},{"label":"SVGFEFuncAElement","type":"property"},{"label":"SVGFEFloodElement","type":"property"},{"label":"SVGFEDropShadowElement","type":"property"},{"label":"SVGFEDistantLightElement","type":"property"},{"label":"SVGFEDisplacementMapElement","type":"property"},{"label":"SVGFEDiffuseLightingElement","type":"property"},{"label":"SVGFEConvolveMatrixElement","type":"property"},{"label":"SVGFECompositeElement","type":"property"},{"label":"SVGFEComponentTransferElement","type":"property"},{"label":"SVGFEColorMatrixElement","type":"property"},{"label":"SVGFEBlendElement","type":"property"},{"label":"SVGEllipseElement","type":"property"},{"label":"SVGElement","type":"property"},{"label":"SVGDiscardElement","type":"property"},{"label":"SVGDescElement","type":"property"},{"label":"SVGDefsElement","type":"property"},{"label":"SVGComponentTransferFunctionElement","type":"property"},{"label":"SVGClipPathElement","type":"property"},{"label":"SVGCircleElement","type":"property"},{"label":"SVGAnimationElement","type":"property"},{"label":"SVGAnimateTransformElement","type":"property"},{"label":"SVGAnimateMotionElement","type":"property"},{"label":"SVGAnimateElement","type":"property"},{"label":"SVGAnimatedTransformList","type":"property"},{"label":"SVGAnimatedString","type":"property"},{"label":"SVGAnimatedRect","type":"property"},{"label":"SVGAnimatedPreserveAspectRatio","type":"property"},{"label":"SVGAnimatedNumberList","type":"property"},{"label":"SVGAnimatedNumber","type":"property"},{"label":"SVGAnimatedLengthList","type":"property"},{"label":"SVGAnimatedLength","type":"property"},{"label":"SVGAnimatedInteger","type":"property"},{"label":"SVGAnimatedEnumeration","type":"property"},{"label":"SVGAnimatedBoolean","type":"property"},{"label":"SVGAnimatedAngle","type":"property"},{"label":"SVGAngle","type":"property"},{"label":"SVGAElement","type":"property"},{"label":"SubtleCrypto","type":"property"},{"label":"StyleSheetList","type":"property"},{"label":"StyleSheet","type":"property"},{"label":"StylePropertyMapReadOnly","type":"property"},{"label":"StylePropertyMap","type":"property"},{"label":"styleMedia","type":"property"},{"label":"String","type":"property"},{"label":"StorageManager","type":"property"},{"label":"StorageEvent","type":"property"},{"label":"Storage","type":"property"},{"label":"stop","type":"property"},{"label":"StereoPannerNode","type":"property"},{"label":"statusbar","type":"property"},{"label":"status","type":"property"},{"label":"StaticRange","type":"property"},{"label":"SpeechSynthesisUtterance","type":"property"},{"label":"SpeechSynthesisEvent","type":"property"},{"label":"SpeechSynthesisErrorEvent","type":"property"},{"label":"speechSynthesis","type":"property"},{"label":"SourceBufferList","type":"property"},{"label":"SourceBuffer","type":"property"},{"label":"showPartsSplash","type":"property"},{"label":"SharedWorker","type":"property"},{"label":"SharedArrayBuffer","type":"property"},{"label":"ShadowRoot","type":"property"},{"label":"setTimeout","type":"property"},{"label":"setInterval","type":"property"},{"label":"setImmediate","type":"property"},{"label":"Set","type":"property"},{"label":"sessionStorage","type":"property"},{"label":"ServiceWorkerRegistration","type":"property"},{"label":"ServiceWorkerContainer","type":"property"},{"label":"ServiceWorker","type":"property"},{"label":"SensorErrorEvent","type":"property"},{"label":"Sensor","type":"property"},{"label":"self","type":"property"},{"label":"Selection","type":"property"},{"label":"SecurityPolicyViolationEvent","type":"property"},{"label":"scrollY","type":"property"},{"label":"scrollX","type":"property"},{"label":"scrollTo","type":"property"},{"label":"scrollBy","type":"property"},{"label":"scrollbars","type":"property"},{"label":"scroll","type":"property"},{"label":"ScriptProcessorNode","type":"property"},{"label":"screenY","type":"property"},{"label":"screenX","type":"property"},{"label":"screenTop","type":"property"},{"label":"ScreenOrientation","type":"property"},{"label":"screenLeft","type":"property"},{"label":"Screen","type":"property"},{"label":"screen","type":"property"},{"label":"RTCTrackEvent","type":"property"},{"label":"RTCStatsReport","type":"property"},{"label":"RTCSessionDescription","type":"property"},{"label":"RTCSctpTransport","type":"property"},{"label":"RTCRtpTransceiver","type":"property"},{"label":"RTCRtpSender","type":"property"},{"label":"RTCRtpReceiver","type":"property"},{"label":"RTCPeerConnectionIceEvent","type":"property"},{"label":"RTCPeerConnectionIceErrorEvent","type":"property"},{"label":"RTCPeerConnection","type":"property"},{"label":"RTCIceTransport","type":"property"},{"label":"RTCIceCandidate","type":"property"},{"label":"RTCErrorEvent","type":"property"},{"label":"RTCError","type":"property"},{"label":"RTCDTMFToneChangeEvent","type":"property"},{"label":"RTCDTMFSender","type":"property"},{"label":"RTCDtlsTransport","type":"property"},{"label":"RTCDataChannelEvent","type":"property"},{"label":"RTCDataChannel","type":"property"},{"label":"RTCCertificate","type":"property"},{"label":"set root","type":"property"},{"label":"get root","type":"property"},{"label":"Response","type":"property"},{"label":"resizeTo","type":"property"},{"label":"ResizeObserverEntry","type":"property"},{"label":"ResizeObserver","type":"property"},{"label":"resizeBy","type":"property"},{"label":"require","type":"property"},{"label":"requestIdleCallback","type":"property"},{"label":"requestAnimationFrame","type":"property"},{"label":"Request","type":"property"},{"label":"ReportingObserver","type":"property"},{"label":"RemotePlayback","type":"property"},{"label":"releaseEvents","type":"property"},{"label":"RelativeOrientationSensor","type":"property"},{"label":"RegExp","type":"property"},{"label":"Reflect","type":"property"},{"label":"ReferenceError","type":"property"},{"label":"ReadableStreamDefaultReader","type":"property"},{"label":"ReadableStream","type":"property"},{"label":"RangeError","type":"property"},{"label":"Range","type":"property"},{"label":"RadioNodeList","type":"property"},{"label":"queueMicrotask","type":"property"},{"label":"PushSubscriptionOptions","type":"property"},{"label":"PushSubscription","type":"property"},{"label":"PushManager","type":"property"},{"label":"PublicKeyCredential","type":"property"},{"label":"Proxy","type":"property"},{"label":"prompt","type":"property"},{"label":"PromiseRejectionEvent","type":"property"},{"label":"Promise","type":"property"},{"label":"ProgressEvent","type":"property"},{"label":"ProcessingInstruction","type":"property"},{"label":"set process","type":"property"},{"label":"get process","type":"property"},{"label":"print","type":"property"},{"label":"PresentationRequest","type":"property"},{"label":"PresentationReceiver","type":"property"},{"label":"PresentationConnectionList","type":"property"},{"label":"PresentationConnectionCloseEvent","type":"property"},{"label":"PresentationConnectionAvailableEvent","type":"property"},{"label":"PresentationConnection","type":"property"},{"label":"PresentationAvailability","type":"property"},{"label":"Presentation","type":"property"},{"label":"postMessage","type":"property"},{"label":"PopStateEvent","type":"property"},{"label":"PointerEvent","type":"property"},{"label":"PluginArray","type":"property"},{"label":"Plugin","type":"property"},{"label":"PictureInPictureWindow","type":"property"},{"label":"PhotoCapabilities","type":"property"},{"label":"personalbar","type":"property"},{"label":"PermissionStatus","type":"property"},{"label":"Permissions","type":"property"},{"label":"PeriodicWave","type":"property"},{"label":"PerformanceTiming","type":"property"},{"label":"PerformanceServerTiming","type":"property"},{"label":"PerformanceResourceTiming","type":"property"},{"label":"PerformancePaintTiming","type":"property"},{"label":"PerformanceObserverEntryList","type":"property"},{"label":"PerformanceObserver","type":"property"},{"label":"PerformanceNavigationTiming","type":"property"},{"label":"PerformanceNavigation","type":"property"},{"label":"PerformanceMeasure","type":"property"},{"label":"PerformanceMark","type":"property"},{"label":"PerformanceLongTaskTiming","type":"property"},{"label":"PerformanceEventTiming","type":"property"},{"label":"PerformanceEntry","type":"property"},{"label":"PerformanceElementTiming","type":"property"},{"label":"Performance","type":"property"},{"label":"performance","type":"property"},{"label":"PaymentResponse","type":"property"},{"label":"PaymentRequestUpdateEvent","type":"property"},{"label":"PaymentRequest","type":"property"},{"label":"PaymentMethodChangeEvent","type":"property"},{"label":"PaymentManager","type":"property"},{"label":"PaymentInstruments","type":"property"},{"label":"PaymentAddress","type":"property"},{"label":"Path2D","type":"property"},{"label":"PasswordCredential","type":"property"},{"label":"parseInt","type":"property"},{"label":"parseFloat","type":"property"},{"label":"parent","type":"property"},{"label":"PannerNode","type":"property"},{"label":"pageYOffset","type":"property"},{"label":"pageXOffset","type":"property"},{"label":"PageTransitionEvent","type":"property"},{"label":"OverconstrainedError","type":"property"},{"label":"outerWidth","type":"property"},{"label":"outerHeight","type":"property"},{"label":"OscillatorNode","type":"property"},{"label":"origin","type":"property"},{"label":"OrientationSensor","type":"property"},{"label":"Option","type":"property"},{"label":"opener","type":"property"},{"label":"openDatabase","type":"property"},{"label":"open","type":"property"},{"label":"onwheel","type":"property"},{"label":"onwebkittransitionend","type":"property"},{"label":"onwebkitanimationstart","type":"property"},{"label":"onwebkitanimationiteration","type":"property"},{"label":"onwebkitanimationend","type":"property"},{"label":"onwaiting","type":"property"},{"label":"onvolumechange","type":"property"},{"label":"onunload","type":"property"},{"label":"onunhandledrejection","type":"property"},{"label":"ontransitionend","type":"property"},{"label":"ontoggle","type":"property"},{"label":"ontimeupdate","type":"property"},{"label":"onsuspend","type":"property"},{"label":"onsubmit","type":"property"},{"label":"onstorage","type":"property"},{"label":"onstalled","type":"property"},{"label":"onselectstart","type":"property"},{"label":"onselectionchange","type":"property"},{"label":"onselect","type":"property"},{"label":"onseeking","type":"property"},{"label":"onseeked","type":"property"},{"label":"onsearch","type":"property"},{"label":"onscroll","type":"property"},{"label":"onresize","type":"property"},{"label":"onreset","type":"property"},{"label":"onrejectionhandled","type":"property"},{"label":"onratechange","type":"property"},{"label":"onprogress","type":"property"},{"label":"onpopstate","type":"property"},{"label":"onpointerup","type":"property"},{"label":"onpointerrawupdate","type":"property"},{"label":"onpointerover","type":"property"},{"label":"onpointerout","type":"property"},{"label":"onpointermove","type":"property"},{"label":"onpointerleave","type":"property"},{"label":"onpointerenter","type":"property"},{"label":"onpointerdown","type":"property"},{"label":"onpointercancel","type":"property"},{"label":"onplaying","type":"property"},{"label":"onplay","type":"property"},{"label":"onpause","type":"property"},{"label":"onpageshow","type":"property"},{"label":"onpagehide","type":"property"},{"label":"ononline","type":"property"},{"label":"onoffline","type":"property"},{"label":"onmousewheel","type":"property"},{"label":"onmouseup","type":"property"},{"label":"onmouseover","type":"property"},{"label":"onmouseout","type":"property"},{"label":"onmousemove","type":"property"},{"label":"onmouseleave","type":"property"},{"label":"onmouseenter","type":"property"},{"label":"onmousedown","type":"property"},{"label":"onmessageerror","type":"property"},{"label":"onmessage","type":"property"},{"label":"onlostpointercapture","type":"property"},{"label":"onloadstart","type":"property"},{"label":"onloadedmetadata","type":"property"},{"label":"onloadeddata","type":"property"},{"label":"onload","type":"property"},{"label":"onlanguagechange","type":"property"},{"label":"onkeyup","type":"property"},{"label":"onkeypress","type":"property"},{"label":"onkeydown","type":"property"},{"label":"oninvalid","type":"property"},{"label":"oninput","type":"property"},{"label":"onhashchange","type":"property"},{"label":"ongotpointercapture","type":"property"},{"label":"onformdata","type":"property"},{"label":"onfocus","type":"property"},{"label":"onerror","type":"property"},{"label":"onended","type":"property"},{"label":"onemptied","type":"property"},{"label":"ondurationchange","type":"property"},{"label":"ondrop","type":"property"},{"label":"ondragstart","type":"property"},{"label":"ondragover","type":"property"},{"label":"ondragleave","type":"property"},{"label":"ondragenter","type":"property"},{"label":"ondragend","type":"property"},{"label":"ondrag","type":"property"},{"label":"ondeviceorientationabsolute","type":"property"},{"label":"ondeviceorientation","type":"property"},{"label":"ondevicemotion","type":"property"},{"label":"ondblclick","type":"property"},{"label":"oncuechange","type":"property"},{"label":"oncontextmenu","type":"property"},{"label":"onclose","type":"property"},{"label":"onclick","type":"property"},{"label":"onchange","type":"property"},{"label":"oncanplaythrough","type":"property"},{"label":"oncanplay","type":"property"},{"label":"oncancel","type":"property"},{"label":"onblur","type":"property"},{"label":"onbeforeunload","type":"property"},{"label":"onbeforeprint","type":"property"},{"label":"onbeforeinstallprompt","type":"property"},{"label":"onauxclick","type":"property"},{"label":"onappinstalled","type":"property"},{"label":"onanimationstart","type":"property"},{"label":"onanimationiteration","type":"property"},{"label":"onanimationend","type":"property"},{"label":"onafterprint","type":"property"},{"label":"onabort","type":"property"},{"label":"OffscreenCanvasRenderingContext2D","type":"property"},{"label":"OffscreenCanvas","type":"property"},{"label":"offscreenBuffering","type":"property"},{"label":"OfflineAudioContext","type":"property"},{"label":"OfflineAudioCompletionEvent","type":"property"},{"label":"Object","type":"property"},{"label":"Number","type":"property"},{"label":"Notification","type":"property"},{"label":"nodeRequire","type":"property"},{"label":"NodeList","type":"property"},{"label":"NodeIterator","type":"property"},{"label":"NodeFilter","type":"property"},{"label":"Node","type":"property"},{"label":"NetworkInformation","type":"property"},{"label":"Navigator","type":"property"},{"label":"navigator","type":"property"},{"label":"NavigationPreloadManager","type":"property"},{"label":"NaN","type":"property"},{"label":"NamedNodeMap","type":"property"},{"label":"name","type":"property"},{"label":"MutationRecord","type":"property"},{"label":"MutationObserver","type":"property"},{"label":"MutationEvent","type":"property"},{"label":"moveTo","type":"property"},{"label":"moveBy","type":"property"},{"label":"MouseEvent","type":"property"},{"label":"MonacoEnvironment","type":"property"},{"label":"module","type":"property"},{"label":"MimeTypeArray","type":"property"},{"label":"MimeType","type":"property"},{"label":"MIDIPort","type":"property"},{"label":"MIDIOutputMap","type":"property"},{"label":"MIDIOutput","type":"property"},{"label":"MIDIMessageEvent","type":"property"},{"label":"MIDIInputMap","type":"property"},{"label":"MIDIInput","type":"property"},{"label":"MIDIConnectionEvent","type":"property"},{"label":"MIDIAccess","type":"property"},{"label":"MessagePort","type":"property"},{"label":"MessageEvent","type":"property"},{"label":"MessageChannel","type":"property"},{"label":"menubar","type":"property"},{"label":"MediaStreamTrackEvent","type":"property"},{"label":"MediaStreamTrack","type":"property"},{"label":"MediaStreamEvent","type":"property"},{"label":"MediaStreamAudioSourceNode","type":"property"},{"label":"MediaStreamAudioDestinationNode","type":"property"},{"label":"MediaStream","type":"property"},{"label":"MediaSource","type":"property"},{"label":"MediaSettingsRange","type":"property"},{"label":"MediaSession","type":"property"},{"label":"MediaRecorder","type":"property"},{"label":"MediaQueryListEvent","type":"property"},{"label":"MediaQueryList","type":"property"},{"label":"MediaMetadata","type":"property"},{"label":"MediaList","type":"property"},{"label":"MediaKeySystemAccess","type":"property"},{"label":"MediaKeyStatusMap","type":"property"},{"label":"MediaKeySession","type":"property"},{"label":"MediaKeys","type":"property"},{"label":"MediaKeyMessageEvent","type":"property"},{"label":"MediaError","type":"property"},{"label":"MediaEncryptedEvent","type":"property"},{"label":"MediaElementAudioSourceNode","type":"property"},{"label":"MediaDevices","type":"property"},{"label":"MediaDeviceInfo","type":"property"},{"label":"MediaCapabilities","type":"property"},{"label":"Math","type":"property"},{"label":"matchMedia","type":"property"},{"label":"Map","type":"property"},{"label":"LockManager","type":"property"},{"label":"Lock","type":"property"},{"label":"locationbar","type":"property"},{"label":"Location","type":"property"},{"label":"location","type":"property"},{"label":"localStorage","type":"property"},{"label":"LinearAccelerationSensor","type":"property"},{"label":"length","type":"property"},{"label":"LayoutShift","type":"property"},{"label":"LargestContentfulPaint","type":"property"},{"label":"KeyframeEffect","type":"property"},{"label":"KeyboardLayoutMap","type":"property"},{"label":"KeyboardEvent","type":"property"},{"label":"Keyboard","type":"property"},{"label":"JSON","type":"property"},{"label":"isSecureContext","type":"property"},{"label":"isNaN","type":"property"},{"label":"isFinite","type":"property"},{"label":"Intl","type":"property"},{"label":"IntersectionObserverEntry","type":"property"},{"label":"IntersectionObserver","type":"property"},{"label":"Int8Array","type":"property"},{"label":"Int32Array","type":"property"},{"label":"Int16Array","type":"property"},{"label":"InputEvent","type":"property"},{"label":"InputDeviceInfo","type":"property"},{"label":"InputDeviceCapabilities","type":"property"},{"label":"innerWidth","type":"property"},{"label":"innerHeight","type":"property"},{"label":"Infinity","type":"property"},{"label":"indexedDB","type":"property"},{"label":"ImageData","type":"property"},{"label":"ImageCapture","type":"property"},{"label":"ImageBitmapRenderingContext","type":"property"},{"label":"ImageBitmap","type":"property"},{"label":"Image","type":"property"},{"label":"IIRFilterNode","type":"property"},{"label":"IdleDeadline","type":"property"},{"label":"IDBVersionChangeEvent","type":"property"},{"label":"IDBTransaction","type":"property"},{"label":"IDBRequest","type":"property"},{"label":"IDBOpenDBRequest","type":"property"},{"label":"IDBObjectStore","type":"property"},{"label":"IDBKeyRange","type":"property"},{"label":"IDBIndex","type":"property"},{"label":"IDBFactory","type":"property"},{"label":"IDBDatabase","type":"property"},{"label":"IDBCursorWithValue","type":"property"},{"label":"IDBCursor","type":"property"},{"label":"HTMLVideoElement","type":"property"},{"label":"HTMLUnknownElement","type":"property"},{"label":"HTMLUListElement","type":"property"},{"label":"HTMLTrackElement","type":"property"},{"label":"HTMLTitleElement","type":"property"},{"label":"HTMLTimeElement","type":"property"},{"label":"HTMLTextAreaElement","type":"property"},{"label":"HTMLTemplateElement","type":"property"},{"label":"HTMLTableSectionElement","type":"property"},{"label":"HTMLTableRowElement","type":"property"},{"label":"HTMLTableElement","type":"property"},{"label":"HTMLTableColElement","type":"property"},{"label":"HTMLTableCellElement","type":"property"},{"label":"HTMLTableCaptionElement","type":"property"},{"label":"HTMLStyleElement","type":"property"},{"label":"HTMLSpanElement","type":"property"},{"label":"HTMLSourceElement","type":"property"},{"label":"HTMLSlotElement","type":"property"},{"label":"HTMLShadowElement","type":"property"},{"label":"HTMLSelectElement","type":"property"},{"label":"HTMLScriptElement","type":"property"},{"label":"HTMLQuoteElement","type":"property"},{"label":"HTMLProgressElement","type":"property"},{"label":"HTMLPreElement","type":"property"},{"label":"HTMLPictureElement","type":"property"},{"label":"HTMLParamElement","type":"property"},{"label":"HTMLParagraphElement","type":"property"},{"label":"HTMLOutputElement","type":"property"},{"label":"HTMLOptionsCollection","type":"property"},{"label":"HTMLOptionElement","type":"property"},{"label":"HTMLOptGroupElement","type":"property"},{"label":"HTMLOListElement","type":"property"},{"label":"HTMLObjectElement","type":"property"},{"label":"HTMLModElement","type":"property"},{"label":"HTMLMeterElement","type":"property"},{"label":"HTMLMetaElement","type":"property"},{"label":"HTMLMenuElement","type":"property"},{"label":"HTMLMediaElement","type":"property"},{"label":"HTMLMarqueeElement","type":"property"},{"label":"HTMLMapElement","type":"property"},{"label":"HTMLLinkElement","type":"property"},{"label":"HTMLLIElement","type":"property"},{"label":"HTMLLegendElement","type":"property"},{"label":"HTMLLabelElement","type":"property"},{"label":"HTMLInputElement","type":"property"},{"label":"HTMLImageElement","type":"property"},{"label":"HTMLIFrameElement","type":"property"},{"label":"HTMLHtmlElement","type":"property"},{"label":"HTMLHRElement","type":"property"},{"label":"HTMLHeadingElement","type":"property"},{"label":"HTMLHeadElement","type":"property"},{"label":"HTMLFrameSetElement","type":"property"},{"label":"HTMLFrameElement","type":"property"},{"label":"HTMLFormElement","type":"property"},{"label":"HTMLFormControlsCollection","type":"property"},{"label":"HTMLFontElement","type":"property"},{"label":"HTMLFieldSetElement","type":"property"},{"label":"HTMLEmbedElement","type":"property"},{"label":"HTMLElement","type":"property"},{"label":"HTMLDocument","type":"property"},{"label":"HTMLDListElement","type":"property"},{"label":"HTMLDivElement","type":"property"},{"label":"HTMLDirectoryElement","type":"property"},{"label":"HTMLDialogElement","type":"property"},{"label":"HTMLDetailsElement","type":"property"},{"label":"HTMLDataListElement","type":"property"},{"label":"HTMLDataElement","type":"property"},{"label":"HTMLContentElement","type":"property"},{"label":"HTMLCollection","type":"property"},{"label":"HTMLCanvasElement","type":"property"},{"label":"HTMLButtonElement","type":"property"},{"label":"HTMLBRElement","type":"property"},{"label":"HTMLBodyElement","type":"property"},{"label":"HTMLBaseElement","type":"property"},{"label":"HTMLAudioElement","type":"property"},{"label":"HTMLAreaElement","type":"property"},{"label":"HTMLAnchorElement","type":"property"},{"label":"HTMLAllCollection","type":"property"},{"label":"History","type":"property"},{"label":"history","type":"property"},{"label":"Headers","type":"property"},{"label":"HashChangeEvent","type":"property"},{"label":"Gyroscope","type":"property"},{"label":"globalThis","type":"property"},{"label":"set GLOBAL","type":"property"},{"label":"get GLOBAL","type":"property"},{"label":"global","type":"property"},{"label":"getSelection","type":"property"},{"label":"getLazyEnv","type":"property"},{"label":"getComputedStyle","type":"property"},{"label":"GamepadHapticActuator","type":"property"},{"label":"GamepadEvent","type":"property"},{"label":"GamepadButton","type":"property"},{"label":"Gamepad","type":"property"},{"label":"GainNode","type":"property"},{"label":"Function","type":"property"},{"label":"frames","type":"property"},{"label":"frameElement","type":"property"},{"label":"FormDataEvent","type":"property"},{"label":"FormData","type":"property"},{"label":"FontFaceSetLoadEvent","type":"property"},{"label":"FontFace","type":"property"},{"label":"FocusEvent","type":"property"},{"label":"focus","type":"property"},{"label":"Float64Array","type":"property"},{"label":"Float32Array","type":"property"},{"label":"find","type":"property"},{"label":"FileReader","type":"property"},{"label":"FileList","type":"property"},{"label":"File","type":"property"},{"label":"fetch","type":"property"},{"label":"FederatedCredential","type":"property"},{"label":"External","type":"property"},{"label":"external","type":"property"},{"label":"EventTarget","type":"property"},{"label":"EventSource","type":"property"},{"label":"Event","type":"property"},{"label":"event","type":"property"},{"label":"EvalError","type":"property"},{"label":"eval","type":"property"},{"label":"escape","type":"property"},{"label":"ErrorEvent","type":"property"},{"label":"Error","type":"property"},{"label":"EnterPictureInPictureEvent","type":"property"},{"label":"encodeURIComponent","type":"property"},{"label":"encodeURI","type":"property"},{"label":"ElementInternals","type":"property"},{"label":"Element","type":"property"},{"label":"DynamicsCompressorNode","type":"property"},{"label":"DragEvent","type":"property"},{"label":"DOMTokenList","type":"property"},{"label":"DOMStringMap","type":"property"},{"label":"DOMStringList","type":"property"},{"label":"DOMRectReadOnly","type":"property"},{"label":"DOMRectList","type":"property"},{"label":"DOMRect","type":"property"},{"label":"DOMQuad","type":"property"},{"label":"DOMPointReadOnly","type":"property"},{"label":"DOMPoint","type":"property"},{"label":"DOMParser","type":"property"},{"label":"DOMMatrixReadOnly","type":"property"},{"label":"DOMMatrix","type":"property"},{"label":"DOMImplementation","type":"property"},{"label":"DOMException","type":"property"},{"label":"DOMError","type":"property"},{"label":"DocumentType","type":"property"},{"label":"DocumentFragment","type":"property"},{"label":"Document","type":"property"},{"label":"document","type":"property"},{"label":"devicePixelRatio","type":"property"},{"label":"DeviceOrientationEvent","type":"property"},{"label":"DeviceMotionEventRotationRate","type":"property"},{"label":"DeviceMotionEventAcceleration","type":"property"},{"label":"DeviceMotionEvent","type":"property"},{"label":"DelayNode","type":"property"},{"label":"defaultStatus","type":"property"},{"label":"defaultstatus","type":"property"},{"label":"decodeURIComponent","type":"property"},{"label":"decodeURI","type":"property"},{"label":"Date","type":"property"},{"label":"DataView","type":"property"},{"label":"DataTransferItemList","type":"property"},{"label":"DataTransferItem","type":"property"},{"label":"DataTransfer","type":"property"},{"label":"CustomEvent","type":"property"},{"label":"CustomElementRegistry","type":"property"},{"label":"CSSVariableReferenceValue","type":"property"},{"label":"CSSUnparsedValue","type":"property"},{"label":"CSSUnitValue","type":"property"},{"label":"CSSTranslate","type":"property"},{"label":"CSSTransformValue","type":"property"},{"label":"CSSTransformComponent","type":"property"},{"label":"CSSSupportsRule","type":"property"},{"label":"CSSStyleValue","type":"property"},{"label":"CSSStyleSheet","type":"property"},{"label":"CSSStyleRule","type":"property"},{"label":"CSSStyleDeclaration","type":"property"},{"label":"CSSSkewY","type":"property"},{"label":"CSSSkewX","type":"property"},{"label":"CSSSkew","type":"property"},{"label":"CSSScale","type":"property"},{"label":"CSSRuleList","type":"property"},{"label":"CSSRule","type":"property"},{"label":"CSSRotate","type":"property"},{"label":"CSSPositionValue","type":"property"},{"label":"CSSPerspective","type":"property"},{"label":"CSSPageRule","type":"property"},{"label":"CSSNumericValue","type":"property"},{"label":"CSSNumericArray","type":"property"},{"label":"CSSNamespaceRule","type":"property"},{"label":"CSSMediaRule","type":"property"},{"label":"CSSMatrixComponent","type":"property"},{"label":"CSSMathValue","type":"property"},{"label":"CSSMathSum","type":"property"},{"label":"CSSMathProduct","type":"property"},{"label":"CSSMathNegate","type":"property"},{"label":"CSSMathMin","type":"property"},{"label":"CSSMathMax","type":"property"},{"label":"CSSMathInvert","type":"property"},{"label":"CSSKeywordValue","type":"property"},{"label":"CSSKeyframesRule","type":"property"},{"label":"CSSKeyframeRule","type":"property"},{"label":"CSSImportRule","type":"property"},{"label":"CSSImageValue","type":"property"},{"label":"CSSGroupingRule","type":"property"},{"label":"CSSFontFaceRule","type":"property"},{"label":"CSSConditionRule","type":"property"},{"label":"CSS","type":"property"},{"label":"CryptoKey","type":"property"},{"label":"Crypto","type":"property"},{"label":"CredentialsContainer","type":"property"},{"label":"Credential","type":"property"},{"label":"CountQueuingStrategy","type":"property"},{"label":"ConvolverNode","type":"property"},{"label":"ConstantSourceNode","type":"property"},{"label":"CompositionEvent","type":"property"},{"label":"Comment","type":"property"},{"label":"CloseEvent","type":"property"},{"label":"ClipboardItem","type":"property"},{"label":"ClipboardEvent","type":"property"},{"label":"Clipboard","type":"property"},{"label":"CharacterData","type":"property"},{"label":"ChannelSplitterNode","type":"property"},{"label":"ChannelMergerNode","type":"property"},{"label":"CDATASection","type":"property"},{"label":"CanvasRenderingContext2D","type":"property"},{"label":"CanvasPattern","type":"property"},{"label":"CanvasGradient","type":"property"},{"label":"CanvasCaptureMediaStreamTrack","type":"property"},{"label":"CacheStorage","type":"property"},{"label":"Cache","type":"property"},{"label":"ByteLengthQueuingStrategy","type":"property"},{"label":"set Buffer","type":"property"},{"label":"get Buffer","type":"property"},{"label":"btoa","type":"property"},{"label":"BroadcastChannel","type":"property"},{"label":"Boolean","type":"property"},{"label":"blur","type":"property"},{"label":"BluetoothUUID","type":"property"},{"label":"BluetoothRemoteGATTService","type":"property"},{"label":"BluetoothRemoteGATTServer","type":"property"},{"label":"BluetoothRemoteGATTDescriptor","type":"property"},{"label":"BluetoothRemoteGATTCharacteristic","type":"property"},{"label":"BluetoothDevice","type":"property"},{"label":"BluetoothCharacteristicProperties","type":"property"},{"label":"Bluetooth","type":"property"},{"label":"BlobEvent","type":"property"},{"label":"Blob","type":"property"},{"label":"BiquadFilterNode","type":"property"},{"label":"BigUint64Array","type":"property"},{"label":"BigInt64Array","type":"property"},{"label":"BigInt","type":"property"},{"label":"BeforeUnloadEvent","type":"property"},{"label":"BeforeInstallPromptEvent","type":"property"},{"label":"BatteryManager","type":"property"},{"label":"BaseAudioContext","type":"property"},{"label":"BarProp","type":"property"},{"label":"BackgroundFetchRegistration","type":"property"},{"label":"BackgroundFetchRecord","type":"property"},{"label":"BackgroundFetchManager","type":"property"},{"label":"AuthenticatorResponse","type":"property"},{"label":"AuthenticatorAttestationResponse","type":"property"},{"label":"AuthenticatorAssertionResponse","type":"property"},{"label":"AudioWorkletNode","type":"property"},{"label":"AudioWorklet","type":"property"},{"label":"AudioScheduledSourceNode","type":"property"},{"label":"AudioProcessingEvent","type":"property"},{"label":"AudioParamMap","type":"property"},{"label":"AudioParam","type":"property"},{"label":"AudioNode","type":"property"},{"label":"AudioListener","type":"property"},{"label":"AudioDestinationNode","type":"property"},{"label":"AudioContext","type":"property"},{"label":"AudioBufferSourceNode","type":"property"},{"label":"AudioBuffer","type":"property"},{"label":"Audio","type":"property"},{"label":"Attr","type":"property"},{"label":"Atomics","type":"property"},{"label":"atob","type":"property"},{"label":"ArrayBuffer","type":"property"},{"label":"Array","type":"property"},{"label":"ApplicationCacheErrorEvent","type":"property"},{"label":"ApplicationCache","type":"property"},{"label":"applicationCache","type":"property"},{"label":"AnimationEvent","type":"property"},{"label":"AnimationEffect","type":"property"},{"label":"Animation","type":"property"},{"label":"AnalyserNode","type":"property"},{"label":"alert","type":"property"},{"label":"Accelerometer","type":"property"},{"label":"AbsoluteOrientationSensor","type":"property"},{"label":"AbortSignal","type":"property"},{"label":"AbortController","type":"property"},{"label":"_performanceEntries","type":"property"},{"label":"__filename","type":"property"},{"label":"__dirname","type":"property"},{"label":"perf","type":"property"},{"label":"bootstrapWindow","type":"property"},{"label":"nls","type":"property"},{"label":"event_1","type":"property"},{"label":"async_1","type":"property"},{"label":"arrays","type":"property"},{"label":"this","type":"property"},{"label":"target","type":"property"},{"label":"shouldPreventDefault","type":"property"},{"label":"resolveResult","type":"property"},{"label":"keypressLabel","type":"property"},{"label":"keybinding","type":"property"},{"label":"firstPart","type":"property"},{"label":"currentChord","type":"property"},{"label":"contextValue","type":"property"},{"label":"stringify","sortText":"stringify"},{"label":"caches","sortText":"~~caches","type":"variable"},{"label":"cancelAnimationFrame","sortText":"~~cancelAnimationFrame","type":"function"},{"label":"cancelIdleCallback","sortText":"~~cancelIdleCallback","type":"function"},{"label":"captureEvents","sortText":"~~captureEvents","type":"function"},{"label":"clearImmediate","sortText":"~~clearImmediate","type":"function"},{"label":"clearInterval","sortText":"~~clearInterval","type":"function"},{"label":"clearTimeout","sortText":"~~clearTimeout","type":"function"},{"label":"clientInformation","sortText":"~~clientInformation","type":"variable"},{"label":"close","sortText":"~~close","type":"function"},{"label":"closed","sortText":"~~closed","type":"variable"},{"label":"confirm","sortText":"~~confirm","type":"function"},{"label":"console","sortText":"~~console","type":"variable"},{"label":"createImageBitmap","sortText":"~~createImageBitmap","type":"function"},{"label":"crypto","sortText":"~~crypto","type":"variable"},{"label":"customElements","sortText":"~~customElements","type":"variable"},{"label":"constructor","sortText":"~~~constructor","type":"class"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425902371,"metadata":{"connectionId":0,"message":{"id":124,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425902523,"metadata":{"connectionId":0,"message":{"seq":82,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.8,"max":0.1,"avg":0.1,"stddev":0,"count":8,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425904001,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"JSON.stringify(contextValue)","frameId":451,"context":"repl"},"type":"request","seq":55}},"level":0} {"tag":"cdp.send","timestamp":1588425904002,"metadata":{"connectionId":0,"message":{"id":125,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"JSON.stringify(contextValue)","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425904003,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1625","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":28,"executionContextId":1,"hash":"1f2415f939bfd360155f215b889f5b405455bd72","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":28,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425904004,"metadata":{"connectionId":0,"message":{"id":125,"result":{"result":{"type":"object","subtype":"error","className":"TypeError","description":"TypeError: Converting circular structure to JSON\n --> starting at object with constructor 'Node'\n | property 'next' -> object with constructor 'Node'\n --- property 'prev' closes the circle\n at JSON.stringify (<anonymous>)\n at eval (eval at _doDispatch (file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js:120:35), <anonymous>:1:6)\n at WorkbenchKeybindingService._doDispatch (file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js:120:35)\n at WorkbenchKeybindingService._dispatch (file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js:104:25)\n at file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js:175:53","objectId":"{\"injectedScriptId\":1,\"id\":951}"},"exceptionDetails":{"exceptionId":1,"text":"Uncaught","lineNumber":0,"columnNumber":5,"scriptId":"1625","stackTrace":{"callFrames":[{"functionName":"eval","scriptId":"1625","url":"","lineNumber":0,"columnNumber":5},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]},"exception":{"type":"object","subtype":"error","className":"TypeError","description":"TypeError: Converting circular structure to JSON\n --> starting at object with constructor 'Node'\n | property 'next' -> object with constructor 'Node'\n --- property 'prev' closes the circle\n at JSON.stringify (<anonymous>)\n at eval (eval at _doDispatch (file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js:120:35), <anonymous>:1:6)\n at WorkbenchKeybindingService._doDispatch (file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js:120:35)\n at WorkbenchKeybindingService._dispatch (file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js:104:25)\n at file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js:175:53","objectId":"{\"injectedScriptId\":1,\"id\":952}"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425904005,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425904006,"metadata":{"connectionId":1,"message":{"seq":3456,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756706","path":"<eval>/VM633756706","sourceReference":633756706}}}},"level":0} {"tag":"dap.send","timestamp":1588425904007,"metadata":{"connectionId":1,"message":{"seq":3457,"type":"response","request_seq":55,"command":"evaluate","success":false,"body":{"error":{"id":9238,"format":"Uncaught TypeError: Converting circular structure to JSON\n --> starting at object with constructor 'Node'\n | property 'next' -> object with constructor 'Node'\n --- property 'prev' closes the circle","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588425904014,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":451},"type":"request","seq":56}},"level":0} {"tag":"dap.send","timestamp":1588425904014,"metadata":{"connectionId":1,"message":{"seq":3458,"type":"response","request_seq":56,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":12,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":13,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":14},{"name":"Global","expensive":true,"variablesReference":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588425904729,"metadata":{"connectionId":1,"message":{"seq":3459,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"completions":{"operation":"completions","totalTime":21.2,"max":11,"avg":10.6,"stddev":0.6,"count":2,"failed":0},"completions.errors":[],"evaluate":{"operation":"evaluate","totalTime":6.1,"max":6.1,"avg":6.1,"stddev":null,"count":1,"failed":1},"evaluate.errors":[{"error":{"message":"Uncaught TypeError: Converting circular structure to JSON\n --> starting at object with constructor 'Node'\n | property 'next' -> object with constructor 'Node'\n --- property 'prev' closes the circle","name":"Error","stack":"Error: Uncaught TypeError: Converting circular structure to JSON\n --> starting at object with constructor 'Node'\n | property 'next' -> object with constructor 'Node'\n --- property 'prev' closes the circle\n\tat k._evaluateRepl (extension.js:21:244437)\n\tat async k.evaluate (extension.js:21:243597)\n\tat async a._onMessage (extension.js:15:2438330)"}}],"scopes":{"operation":"scopes","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"scopes.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425909007,"metadata":{"connectionId":0,"message":{"seq":83,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425909062,"metadata":{"connectionId":1,"message":{"command":"completions","arguments":{"frameId":451,"text":"c","column":2,"line":1},"type":"request","seq":57}},"level":0} {"tag":"cdp.send","timestamp":1588425909063,"metadata":{"connectionId":0,"message":{"id":126,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"(self)","objectGroup":"console","silent":true,"throwOnSideEffect":false,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425909066,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1626","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":6,"executionContextId":1,"hash":"338fef78819848be36328c15cd924d3481abe278","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":6,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425909066,"metadata":{"connectionId":0,"message":{"id":126,"result":{"result":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":953}"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425909068,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425909070,"metadata":{"connectionId":1,"message":{"seq":3460,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756707","path":"<eval>/VM633756707","sourceReference":633756707}}}},"level":0} {"tag":"cdp.send","timestamp":1588425909070,"metadata":{"connectionId":0,"message":{"id":127,"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"function(e,t,r){const n=r?\"variable\":\"property\",i=(e,t,i)=>{if(\"function\"!==t)return n;if(\"constructor\"===e)return\"class\";const a=String(i);return a.startsWith(\"class \")||a.includes(\"[native code]\")&&/^[A-Z]/.test(e)?\"class\":r?\"function\":\"method\"},a=[],o=new Set;let s=\"~\",c=void 0===e?this:e;for(;null!=c;c=c.__proto__){s+=\"~\";const e=Object.getOwnPropertyNames(c).filter(e=>e.startsWith(t)&&!e.match(/^\\d+$/));for(const t of e){if(o.has(t))continue;o.add(t);const e=Object.getOwnPropertyDescriptor(c,t);let r=n;try{r=i(t,typeof(null==e?void 0:e.value),c[t])}catch(e){}a.push({label:t,sortText:s+t.replace(/^_+/,e=>\"{\".repeat(e.length)),type:r})}r=!1}return{result:a,isArray:this instanceof Array}}","arguments":[{},{"value":"c"},{"value":true}],"objectId":"{\"injectedScriptId\":1,\"id\":953}","returnByValue":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425909073,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1629","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":701,"executionContextId":1,"hash":"045dbea2708b71047124f11f2c93e91c2ae896dd","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":701,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425909073,"metadata":{"connectionId":0,"message":{"id":127,"result":{"result":{"type":"object","value":{"result":[{"label":"console","sortText":"~~console","type":"variable"},{"label":"close","sortText":"~~close","type":"function"},{"label":"closed","sortText":"~~closed","type":"variable"},{"label":"customElements","sortText":"~~customElements","type":"variable"},{"label":"clientInformation","sortText":"~~clientInformation","type":"variable"},{"label":"confirm","sortText":"~~confirm","type":"function"},{"label":"cancelAnimationFrame","sortText":"~~cancelAnimationFrame","type":"function"},{"label":"captureEvents","sortText":"~~captureEvents","type":"function"},{"label":"cancelIdleCallback","sortText":"~~cancelIdleCallback","type":"function"},{"label":"clearTimeout","sortText":"~~clearTimeout","type":"function"},{"label":"clearInterval","sortText":"~~clearInterval","type":"function"},{"label":"createImageBitmap","sortText":"~~createImageBitmap","type":"function"},{"label":"crypto","sortText":"~~crypto","type":"variable"},{"label":"caches","sortText":"~~caches","type":"variable"},{"label":"clearImmediate","sortText":"~~clearImmediate","type":"function"},{"label":"constructor","sortText":"~~~constructor","type":"class"}],"isArray":false}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425909074,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425909075,"metadata":{"connectionId":1,"message":{"seq":3461,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756708","path":"<eval>/VM633756708","sourceReference":633756708}}}},"level":0} {"tag":"cdp.send","timestamp":1588425909075,"metadata":{"connectionId":0,"message":{"id":128,"method":"Runtime.releaseObject","params":{"objectId":"{\"injectedScriptId\":1,\"id\":953}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425909076,"metadata":{"connectionId":1,"message":{"seq":3462,"type":"response","request_seq":57,"command":"completions","success":true,"body":{"targets":[{"label":"cd top","start":0,"length":1},{"label":"__proto__","type":"property"},{"label":"XSLTProcessor","type":"property"},{"label":"XPathResult","type":"property"},{"label":"XPathExpression","type":"property"},{"label":"XPathEvaluator","type":"property"},{"label":"XMLSerializer","type":"property"},{"label":"XMLHttpRequestUpload","type":"property"},{"label":"XMLHttpRequestEventTarget","type":"property"},{"label":"XMLHttpRequest","type":"property"},{"label":"XMLDocument","type":"property"},{"label":"WritableStreamDefaultWriter","type":"property"},{"label":"WritableStream","type":"property"},{"label":"Worklet","type":"property"},{"label":"Worker","type":"property"},{"label":"Window","type":"property"},{"label":"window","type":"property"},{"label":"WheelEvent","type":"property"},{"label":"WebView","type":"property"},{"label":"WebSocket","type":"property"},{"label":"webkitURL","type":"property"},{"label":"webkitStorageInfo","type":"property"},{"label":"webkitSpeechRecognitionEvent","type":"property"},{"label":"webkitSpeechRecognitionError","type":"property"},{"label":"webkitSpeechRecognition","type":"property"},{"label":"webkitSpeechGrammarList","type":"property"},{"label":"webkitSpeechGrammar","type":"property"},{"label":"webkitRTCPeerConnection","type":"property"},{"label":"webkitResolveLocalFileSystemURL","type":"property"},{"label":"webkitRequestFileSystem","type":"property"},{"label":"webkitRequestAnimationFrame","type":"property"},{"label":"WebKitMutationObserver","type":"property"},{"label":"webkitMediaStream","type":"property"},{"label":"WebKitCSSMatrix","type":"property"},{"label":"webkitCancelAnimationFrame","type":"property"},{"label":"WebGLVertexArrayObject","type":"property"},{"label":"WebGLUniformLocation","type":"property"},{"label":"WebGLTransformFeedback","type":"property"},{"label":"WebGLTexture","type":"property"},{"label":"WebGLSync","type":"property"},{"label":"WebGLShaderPrecisionFormat","type":"property"},{"label":"WebGLShader","type":"property"},{"label":"WebGLSampler","type":"property"},{"label":"WebGLRenderingContext","type":"property"},{"label":"WebGLRenderbuffer","type":"property"},{"label":"WebGLQuery","type":"property"},{"label":"WebGLProgram","type":"property"},{"label":"WebGLFramebuffer","type":"property"},{"label":"WebGLContextEvent","type":"property"},{"label":"WebGLBuffer","type":"property"},{"label":"WebGLActiveInfo","type":"property"},{"label":"WebGL2RenderingContext","type":"property"},{"label":"WebAssembly","type":"property"},{"label":"WeakSet","type":"property"},{"label":"WeakMap","type":"property"},{"label":"WaveShaperNode","type":"property"},{"label":"VTTCue","type":"property"},{"label":"VisualViewport","type":"property"},{"label":"visualViewport","type":"property"},{"label":"ValidityState","type":"property"},{"label":"UserActivation","type":"property"},{"label":"USBOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferResult","type":"property"},{"label":"USBIsochronousOutTransferPacket","type":"property"},{"label":"USBIsochronousInTransferResult","type":"property"},{"label":"USBIsochronousInTransferPacket","type":"property"},{"label":"USBInTransferResult","type":"property"},{"label":"USBInterface","type":"property"},{"label":"USBEndpoint","type":"property"},{"label":"USBDevice","type":"property"},{"label":"USBConnectionEvent","type":"property"},{"label":"USBConfiguration","type":"property"},{"label":"USBAlternateInterface","type":"property"},{"label":"USB","type":"property"},{"label":"URLSearchParams","type":"property"},{"label":"URL","type":"property"},{"label":"URIError","type":"property"},{"label":"unescape","type":"property"},{"label":"undefined","type":"property"},{"label":"Uint8ClampedArray","type":"property"},{"label":"Uint8Array","type":"property"},{"label":"Uint32Array","type":"property"},{"label":"Uint16Array","type":"property"},{"label":"UIEvent","type":"property"},{"label":"TypeError","type":"property"},{"label":"TreeWalker","type":"property"},{"label":"TransitionEvent","type":"property"},{"label":"TransformStream","type":"property"},{"label":"TrackEvent","type":"property"},{"label":"TouchList","type":"property"},{"label":"TouchEvent","type":"property"},{"label":"Touch","type":"property"},{"label":"top","type":"property"},{"label":"toolbar","type":"property"},{"label":"TimeRanges","type":"property"},{"label":"TextTrackList","type":"property"},{"label":"TextTrackCueList","type":"property"},{"label":"TextTrackCue","type":"property"},{"label":"TextTrack","type":"property"},{"label":"TextMetrics","type":"property"},{"label":"TextEvent","type":"property"},{"label":"TextEncoderStream","type":"property"},{"label":"TextEncoder","type":"property"},{"label":"TextDecoderStream","type":"property"},{"label":"TextDecoder","type":"property"},{"label":"Text","type":"property"},{"label":"TaskAttributionTiming","type":"property"},{"label":"SyntaxError","type":"property"},{"label":"SyncManager","type":"property"},{"label":"Symbol(Symbol.toStringTag)","type":"property"},{"label":"get Symbol(graceful-fs.queue)","type":"property"},{"label":"Symbol","type":"property"},{"label":"SVGViewElement","type":"property"},{"label":"SVGUseElement","type":"property"},{"label":"SVGUnitTypes","type":"property"},{"label":"SVGTSpanElement","type":"property"},{"label":"SVGTransformList","type":"property"},{"label":"SVGTransform","type":"property"},{"label":"SVGTitleElement","type":"property"},{"label":"SVGTextPositioningElement","type":"property"},{"label":"SVGTextPathElement","type":"property"},{"label":"SVGTextElement","type":"property"},{"label":"SVGTextContentElement","type":"property"},{"label":"SVGSymbolElement","type":"property"},{"label":"SVGSwitchElement","type":"property"},{"label":"SVGSVGElement","type":"property"},{"label":"SVGStyleElement","type":"property"},{"label":"SVGStringList","type":"property"},{"label":"SVGStopElement","type":"property"},{"label":"SVGSetElement","type":"property"},{"label":"SVGScriptElement","type":"property"},{"label":"SVGRectElement","type":"property"},{"label":"SVGRect","type":"property"},{"label":"SVGRadialGradientElement","type":"property"},{"label":"SVGPreserveAspectRatio","type":"property"},{"label":"SVGPolylineElement","type":"property"},{"label":"SVGPolygonElement","type":"property"},{"label":"SVGPointList","type":"property"},{"label":"SVGPoint","type":"property"},{"label":"SVGPatternElement","type":"property"},{"label":"SVGPathElement","type":"property"},{"label":"SVGNumberList","type":"property"},{"label":"SVGNumber","type":"property"},{"label":"SVGMPathElement","type":"property"},{"label":"SVGMetadataElement","type":"property"},{"label":"SVGMatrix","type":"property"},{"label":"SVGMaskElement","type":"property"},{"label":"SVGMarkerElement","type":"property"},{"label":"SVGLineElement","type":"property"},{"label":"SVGLinearGradientElement","type":"property"},{"label":"SVGLengthList","type":"property"},{"label":"SVGLength","type":"property"},{"label":"SVGImageElement","type":"property"},{"label":"SVGGraphicsElement","type":"property"},{"label":"SVGGradientElement","type":"property"},{"label":"SVGGeometryElement","type":"property"},{"label":"SVGGElement","type":"property"},{"label":"SVGForeignObjectElement","type":"property"},{"label":"SVGFilterElement","type":"property"},{"label":"SVGFETurbulenceElement","type":"property"},{"label":"SVGFETileElement","type":"property"},{"label":"SVGFESpotLightElement","type":"property"},{"label":"SVGFESpecularLightingElement","type":"property"},{"label":"SVGFEPointLightElement","type":"property"},{"label":"SVGFEOffsetElement","type":"property"},{"label":"SVGFEMorphologyElement","type":"property"},{"label":"SVGFEMergeNodeElement","type":"property"},{"label":"SVGFEMergeElement","type":"property"},{"label":"SVGFEImageElement","type":"property"},{"label":"SVGFEGaussianBlurElement","type":"property"},{"label":"SVGFEFuncRElement","type":"property"},{"label":"SVGFEFuncGElement","type":"property"},{"label":"SVGFEFuncBElement","type":"property"},{"label":"SVGFEFuncAElement","type":"property"},{"label":"SVGFEFloodElement","type":"property"},{"label":"SVGFEDropShadowElement","type":"property"},{"label":"SVGFEDistantLightElement","type":"property"},{"label":"SVGFEDisplacementMapElement","type":"property"},{"label":"SVGFEDiffuseLightingElement","type":"property"},{"label":"SVGFEConvolveMatrixElement","type":"property"},{"label":"SVGFECompositeElement","type":"property"},{"label":"SVGFEComponentTransferElement","type":"property"},{"label":"SVGFEColorMatrixElement","type":"property"},{"label":"SVGFEBlendElement","type":"property"},{"label":"SVGEllipseElement","type":"property"},{"label":"SVGElement","type":"property"},{"label":"SVGDiscardElement","type":"property"},{"label":"SVGDescElement","type":"property"},{"label":"SVGDefsElement","type":"property"},{"label":"SVGComponentTransferFunctionElement","type":"property"},{"label":"SVGClipPathElement","type":"property"},{"label":"SVGCircleElement","type":"property"},{"label":"SVGAnimationElement","type":"property"},{"label":"SVGAnimateTransformElement","type":"property"},{"label":"SVGAnimateMotionElement","type":"property"},{"label":"SVGAnimateElement","type":"property"},{"label":"SVGAnimatedTransformList","type":"property"},{"label":"SVGAnimatedString","type":"property"},{"label":"SVGAnimatedRect","type":"property"},{"label":"SVGAnimatedPreserveAspectRatio","type":"property"},{"label":"SVGAnimatedNumberList","type":"property"},{"label":"SVGAnimatedNumber","type":"property"},{"label":"SVGAnimatedLengthList","type":"property"},{"label":"SVGAnimatedLength","type":"property"},{"label":"SVGAnimatedInteger","type":"property"},{"label":"SVGAnimatedEnumeration","type":"property"},{"label":"SVGAnimatedBoolean","type":"property"},{"label":"SVGAnimatedAngle","type":"property"},{"label":"SVGAngle","type":"property"},{"label":"SVGAElement","type":"property"},{"label":"SubtleCrypto","type":"property"},{"label":"StyleSheetList","type":"property"},{"label":"StyleSheet","type":"property"},{"label":"StylePropertyMapReadOnly","type":"property"},{"label":"StylePropertyMap","type":"property"},{"label":"styleMedia","type":"property"},{"label":"String","type":"property"},{"label":"StorageManager","type":"property"},{"label":"StorageEvent","type":"property"},{"label":"Storage","type":"property"},{"label":"stop","type":"property"},{"label":"StereoPannerNode","type":"property"},{"label":"statusbar","type":"property"},{"label":"status","type":"property"},{"label":"StaticRange","type":"property"},{"label":"SpeechSynthesisUtterance","type":"property"},{"label":"SpeechSynthesisEvent","type":"property"},{"label":"SpeechSynthesisErrorEvent","type":"property"},{"label":"speechSynthesis","type":"property"},{"label":"SourceBufferList","type":"property"},{"label":"SourceBuffer","type":"property"},{"label":"showPartsSplash","type":"property"},{"label":"SharedWorker","type":"property"},{"label":"SharedArrayBuffer","type":"property"},{"label":"ShadowRoot","type":"property"},{"label":"setTimeout","type":"property"},{"label":"setInterval","type":"property"},{"label":"setImmediate","type":"property"},{"label":"Set","type":"property"},{"label":"sessionStorage","type":"property"},{"label":"ServiceWorkerRegistration","type":"property"},{"label":"ServiceWorkerContainer","type":"property"},{"label":"ServiceWorker","type":"property"},{"label":"SensorErrorEvent","type":"property"},{"label":"Sensor","type":"property"},{"label":"self","type":"property"},{"label":"Selection","type":"property"},{"label":"SecurityPolicyViolationEvent","type":"property"},{"label":"scrollY","type":"property"},{"label":"scrollX","type":"property"},{"label":"scrollTo","type":"property"},{"label":"scrollBy","type":"property"},{"label":"scrollbars","type":"property"},{"label":"scroll","type":"property"},{"label":"ScriptProcessorNode","type":"property"},{"label":"screenY","type":"property"},{"label":"screenX","type":"property"},{"label":"screenTop","type":"property"},{"label":"ScreenOrientation","type":"property"},{"label":"screenLeft","type":"property"},{"label":"Screen","type":"property"},{"label":"screen","type":"property"},{"label":"RTCTrackEvent","type":"property"},{"label":"RTCStatsReport","type":"property"},{"label":"RTCSessionDescription","type":"property"},{"label":"RTCSctpTransport","type":"property"},{"label":"RTCRtpTransceiver","type":"property"},{"label":"RTCRtpSender","type":"property"},{"label":"RTCRtpReceiver","type":"property"},{"label":"RTCPeerConnectionIceEvent","type":"property"},{"label":"RTCPeerConnectionIceErrorEvent","type":"property"},{"label":"RTCPeerConnection","type":"property"},{"label":"RTCIceTransport","type":"property"},{"label":"RTCIceCandidate","type":"property"},{"label":"RTCErrorEvent","type":"property"},{"label":"RTCError","type":"property"},{"label":"RTCDTMFToneChangeEvent","type":"property"},{"label":"RTCDTMFSender","type":"property"},{"label":"RTCDtlsTransport","type":"property"},{"label":"RTCDataChannelEvent","type":"property"},{"label":"RTCDataChannel","type":"property"},{"label":"RTCCertificate","type":"property"},{"label":"set root","type":"property"},{"label":"get root","type":"property"},{"label":"Response","type":"property"},{"label":"resizeTo","type":"property"},{"label":"ResizeObserverEntry","type":"property"},{"label":"ResizeObserver","type":"property"},{"label":"resizeBy","type":"property"},{"label":"require","type":"property"},{"label":"requestIdleCallback","type":"property"},{"label":"requestAnimationFrame","type":"property"},{"label":"Request","type":"property"},{"label":"ReportingObserver","type":"property"},{"label":"RemotePlayback","type":"property"},{"label":"releaseEvents","type":"property"},{"label":"RelativeOrientationSensor","type":"property"},{"label":"RegExp","type":"property"},{"label":"Reflect","type":"property"},{"label":"ReferenceError","type":"property"},{"label":"ReadableStreamDefaultReader","type":"property"},{"label":"ReadableStream","type":"property"},{"label":"RangeError","type":"property"},{"label":"Range","type":"property"},{"label":"RadioNodeList","type":"property"},{"label":"queueMicrotask","type":"property"},{"label":"PushSubscriptionOptions","type":"property"},{"label":"PushSubscription","type":"property"},{"label":"PushManager","type":"property"},{"label":"PublicKeyCredential","type":"property"},{"label":"Proxy","type":"property"},{"label":"prompt","type":"property"},{"label":"PromiseRejectionEvent","type":"property"},{"label":"Promise","type":"property"},{"label":"ProgressEvent","type":"property"},{"label":"ProcessingInstruction","type":"property"},{"label":"set process","type":"property"},{"label":"get process","type":"property"},{"label":"print","type":"property"},{"label":"PresentationRequest","type":"property"},{"label":"PresentationReceiver","type":"property"},{"label":"PresentationConnectionList","type":"property"},{"label":"PresentationConnectionCloseEvent","type":"property"},{"label":"PresentationConnectionAvailableEvent","type":"property"},{"label":"PresentationConnection","type":"property"},{"label":"PresentationAvailability","type":"property"},{"label":"Presentation","type":"property"},{"label":"postMessage","type":"property"},{"label":"PopStateEvent","type":"property"},{"label":"PointerEvent","type":"property"},{"label":"PluginArray","type":"property"},{"label":"Plugin","type":"property"},{"label":"PictureInPictureWindow","type":"property"},{"label":"PhotoCapabilities","type":"property"},{"label":"personalbar","type":"property"},{"label":"PermissionStatus","type":"property"},{"label":"Permissions","type":"property"},{"label":"PeriodicWave","type":"property"},{"label":"PerformanceTiming","type":"property"},{"label":"PerformanceServerTiming","type":"property"},{"label":"PerformanceResourceTiming","type":"property"},{"label":"PerformancePaintTiming","type":"property"},{"label":"PerformanceObserverEntryList","type":"property"},{"label":"PerformanceObserver","type":"property"},{"label":"PerformanceNavigationTiming","type":"property"},{"label":"PerformanceNavigation","type":"property"},{"label":"PerformanceMeasure","type":"property"},{"label":"PerformanceMark","type":"property"},{"label":"PerformanceLongTaskTiming","type":"property"},{"label":"PerformanceEventTiming","type":"property"},{"label":"PerformanceEntry","type":"property"},{"label":"PerformanceElementTiming","type":"property"},{"label":"Performance","type":"property"},{"label":"performance","type":"property"},{"label":"PaymentResponse","type":"property"},{"label":"PaymentRequestUpdateEvent","type":"property"},{"label":"PaymentRequest","type":"property"},{"label":"PaymentMethodChangeEvent","type":"property"},{"label":"PaymentManager","type":"property"},{"label":"PaymentInstruments","type":"property"},{"label":"PaymentAddress","type":"property"},{"label":"Path2D","type":"property"},{"label":"PasswordCredential","type":"property"},{"label":"parseInt","type":"property"},{"label":"parseFloat","type":"property"},{"label":"parent","type":"property"},{"label":"PannerNode","type":"property"},{"label":"pageYOffset","type":"property"},{"label":"pageXOffset","type":"property"},{"label":"PageTransitionEvent","type":"property"},{"label":"OverconstrainedError","type":"property"},{"label":"outerWidth","type":"property"},{"label":"outerHeight","type":"property"},{"label":"OscillatorNode","type":"property"},{"label":"origin","type":"property"},{"label":"OrientationSensor","type":"property"},{"label":"Option","type":"property"},{"label":"opener","type":"property"},{"label":"openDatabase","type":"property"},{"label":"open","type":"property"},{"label":"onwheel","type":"property"},{"label":"onwebkittransitionend","type":"property"},{"label":"onwebkitanimationstart","type":"property"},{"label":"onwebkitanimationiteration","type":"property"},{"label":"onwebkitanimationend","type":"property"},{"label":"onwaiting","type":"property"},{"label":"onvolumechange","type":"property"},{"label":"onunload","type":"property"},{"label":"onunhandledrejection","type":"property"},{"label":"ontransitionend","type":"property"},{"label":"ontoggle","type":"property"},{"label":"ontimeupdate","type":"property"},{"label":"onsuspend","type":"property"},{"label":"onsubmit","type":"property"},{"label":"onstorage","type":"property"},{"label":"onstalled","type":"property"},{"label":"onselectstart","type":"property"},{"label":"onselectionchange","type":"property"},{"label":"onselect","type":"property"},{"label":"onseeking","type":"property"},{"label":"onseeked","type":"property"},{"label":"onsearch","type":"property"},{"label":"onscroll","type":"property"},{"label":"onresize","type":"property"},{"label":"onreset","type":"property"},{"label":"onrejectionhandled","type":"property"},{"label":"onratechange","type":"property"},{"label":"onprogress","type":"property"},{"label":"onpopstate","type":"property"},{"label":"onpointerup","type":"property"},{"label":"onpointerrawupdate","type":"property"},{"label":"onpointerover","type":"property"},{"label":"onpointerout","type":"property"},{"label":"onpointermove","type":"property"},{"label":"onpointerleave","type":"property"},{"label":"onpointerenter","type":"property"},{"label":"onpointerdown","type":"property"},{"label":"onpointercancel","type":"property"},{"label":"onplaying","type":"property"},{"label":"onplay","type":"property"},{"label":"onpause","type":"property"},{"label":"onpageshow","type":"property"},{"label":"onpagehide","type":"property"},{"label":"ononline","type":"property"},{"label":"onoffline","type":"property"},{"label":"onmousewheel","type":"property"},{"label":"onmouseup","type":"property"},{"label":"onmouseover","type":"property"},{"label":"onmouseout","type":"property"},{"label":"onmousemove","type":"property"},{"label":"onmouseleave","type":"property"},{"label":"onmouseenter","type":"property"},{"label":"onmousedown","type":"property"},{"label":"onmessageerror","type":"property"},{"label":"onmessage","type":"property"},{"label":"onlostpointercapture","type":"property"},{"label":"onloadstart","type":"property"},{"label":"onloadedmetadata","type":"property"},{"label":"onloadeddata","type":"property"},{"label":"onload","type":"property"},{"label":"onlanguagechange","type":"property"},{"label":"onkeyup","type":"property"},{"label":"onkeypress","type":"property"},{"label":"onkeydown","type":"property"},{"label":"oninvalid","type":"property"},{"label":"oninput","type":"property"},{"label":"onhashchange","type":"property"},{"label":"ongotpointercapture","type":"property"},{"label":"onformdata","type":"property"},{"label":"onfocus","type":"property"},{"label":"onerror","type":"property"},{"label":"onended","type":"property"},{"label":"onemptied","type":"property"},{"label":"ondurationchange","type":"property"},{"label":"ondrop","type":"property"},{"label":"ondragstart","type":"property"},{"label":"ondragover","type":"property"},{"label":"ondragleave","type":"property"},{"label":"ondragenter","type":"property"},{"label":"ondragend","type":"property"},{"label":"ondrag","type":"property"},{"label":"ondeviceorientationabsolute","type":"property"},{"label":"ondeviceorientation","type":"property"},{"label":"ondevicemotion","type":"property"},{"label":"ondblclick","type":"property"},{"label":"oncuechange","type":"property"},{"label":"oncontextmenu","type":"property"},{"label":"onclose","type":"property"},{"label":"onclick","type":"property"},{"label":"onchange","type":"property"},{"label":"oncanplaythrough","type":"property"},{"label":"oncanplay","type":"property"},{"label":"oncancel","type":"property"},{"label":"onblur","type":"property"},{"label":"onbeforeunload","type":"property"},{"label":"onbeforeprint","type":"property"},{"label":"onbeforeinstallprompt","type":"property"},{"label":"onauxclick","type":"property"},{"label":"onappinstalled","type":"property"},{"label":"onanimationstart","type":"property"},{"label":"onanimationiteration","type":"property"},{"label":"onanimationend","type":"property"},{"label":"onafterprint","type":"property"},{"label":"onabort","type":"property"},{"label":"OffscreenCanvasRenderingContext2D","type":"property"},{"label":"OffscreenCanvas","type":"property"},{"label":"offscreenBuffering","type":"property"},{"label":"OfflineAudioContext","type":"property"},{"label":"OfflineAudioCompletionEvent","type":"property"},{"label":"Object","type":"property"},{"label":"Number","type":"property"},{"label":"Notification","type":"property"},{"label":"nodeRequire","type":"property"},{"label":"NodeList","type":"property"},{"label":"NodeIterator","type":"property"},{"label":"NodeFilter","type":"property"},{"label":"Node","type":"property"},{"label":"NetworkInformation","type":"property"},{"label":"Navigator","type":"property"},{"label":"navigator","type":"property"},{"label":"NavigationPreloadManager","type":"property"},{"label":"NaN","type":"property"},{"label":"NamedNodeMap","type":"property"},{"label":"name","type":"property"},{"label":"MutationRecord","type":"property"},{"label":"MutationObserver","type":"property"},{"label":"MutationEvent","type":"property"},{"label":"moveTo","type":"property"},{"label":"moveBy","type":"property"},{"label":"MouseEvent","type":"property"},{"label":"MonacoEnvironment","type":"property"},{"label":"module","type":"property"},{"label":"MimeTypeArray","type":"property"},{"label":"MimeType","type":"property"},{"label":"MIDIPort","type":"property"},{"label":"MIDIOutputMap","type":"property"},{"label":"MIDIOutput","type":"property"},{"label":"MIDIMessageEvent","type":"property"},{"label":"MIDIInputMap","type":"property"},{"label":"MIDIInput","type":"property"},{"label":"MIDIConnectionEvent","type":"property"},{"label":"MIDIAccess","type":"property"},{"label":"MessagePort","type":"property"},{"label":"MessageEvent","type":"property"},{"label":"MessageChannel","type":"property"},{"label":"menubar","type":"property"},{"label":"MediaStreamTrackEvent","type":"property"},{"label":"MediaStreamTrack","type":"property"},{"label":"MediaStreamEvent","type":"property"},{"label":"MediaStreamAudioSourceNode","type":"property"},{"label":"MediaStreamAudioDestinationNode","type":"property"},{"label":"MediaStream","type":"property"},{"label":"MediaSource","type":"property"},{"label":"MediaSettingsRange","type":"property"},{"label":"MediaSession","type":"property"},{"label":"MediaRecorder","type":"property"},{"label":"MediaQueryListEvent","type":"property"},{"label":"MediaQueryList","type":"property"},{"label":"MediaMetadata","type":"property"},{"label":"MediaList","type":"property"},{"label":"MediaKeySystemAccess","type":"property"},{"label":"MediaKeyStatusMap","type":"property"},{"label":"MediaKeySession","type":"property"},{"label":"MediaKeys","type":"property"},{"label":"MediaKeyMessageEvent","type":"property"},{"label":"MediaError","type":"property"},{"label":"MediaEncryptedEvent","type":"property"},{"label":"MediaElementAudioSourceNode","type":"property"},{"label":"MediaDevices","type":"property"},{"label":"MediaDeviceInfo","type":"property"},{"label":"MediaCapabilities","type":"property"},{"label":"Math","type":"property"},{"label":"matchMedia","type":"property"},{"label":"Map","type":"property"},{"label":"LockManager","type":"property"},{"label":"Lock","type":"property"},{"label":"locationbar","type":"property"},{"label":"Location","type":"property"},{"label":"location","type":"property"},{"label":"localStorage","type":"property"},{"label":"LinearAccelerationSensor","type":"property"},{"label":"length","type":"property"},{"label":"LayoutShift","type":"property"},{"label":"LargestContentfulPaint","type":"property"},{"label":"KeyframeEffect","type":"property"},{"label":"KeyboardLayoutMap","type":"property"},{"label":"KeyboardEvent","type":"property"},{"label":"Keyboard","type":"property"},{"label":"JSON","type":"property"},{"label":"isSecureContext","type":"property"},{"label":"isNaN","type":"property"},{"label":"isFinite","type":"property"},{"label":"Intl","type":"property"},{"label":"IntersectionObserverEntry","type":"property"},{"label":"IntersectionObserver","type":"property"},{"label":"Int8Array","type":"property"},{"label":"Int32Array","type":"property"},{"label":"Int16Array","type":"property"},{"label":"InputEvent","type":"property"},{"label":"InputDeviceInfo","type":"property"},{"label":"InputDeviceCapabilities","type":"property"},{"label":"innerWidth","type":"property"},{"label":"innerHeight","type":"property"},{"label":"Infinity","type":"property"},{"label":"indexedDB","type":"property"},{"label":"ImageData","type":"property"},{"label":"ImageCapture","type":"property"},{"label":"ImageBitmapRenderingContext","type":"property"},{"label":"ImageBitmap","type":"property"},{"label":"Image","type":"property"},{"label":"IIRFilterNode","type":"property"},{"label":"IdleDeadline","type":"property"},{"label":"IDBVersionChangeEvent","type":"property"},{"label":"IDBTransaction","type":"property"},{"label":"IDBRequest","type":"property"},{"label":"IDBOpenDBRequest","type":"property"},{"label":"IDBObjectStore","type":"property"},{"label":"IDBKeyRange","type":"property"},{"label":"IDBIndex","type":"property"},{"label":"IDBFactory","type":"property"},{"label":"IDBDatabase","type":"property"},{"label":"IDBCursorWithValue","type":"property"},{"label":"IDBCursor","type":"property"},{"label":"HTMLVideoElement","type":"property"},{"label":"HTMLUnknownElement","type":"property"},{"label":"HTMLUListElement","type":"property"},{"label":"HTMLTrackElement","type":"property"},{"label":"HTMLTitleElement","type":"property"},{"label":"HTMLTimeElement","type":"property"},{"label":"HTMLTextAreaElement","type":"property"},{"label":"HTMLTemplateElement","type":"property"},{"label":"HTMLTableSectionElement","type":"property"},{"label":"HTMLTableRowElement","type":"property"},{"label":"HTMLTableElement","type":"property"},{"label":"HTMLTableColElement","type":"property"},{"label":"HTMLTableCellElement","type":"property"},{"label":"HTMLTableCaptionElement","type":"property"},{"label":"HTMLStyleElement","type":"property"},{"label":"HTMLSpanElement","type":"property"},{"label":"HTMLSourceElement","type":"property"},{"label":"HTMLSlotElement","type":"property"},{"label":"HTMLShadowElement","type":"property"},{"label":"HTMLSelectElement","type":"property"},{"label":"HTMLScriptElement","type":"property"},{"label":"HTMLQuoteElement","type":"property"},{"label":"HTMLProgressElement","type":"property"},{"label":"HTMLPreElement","type":"property"},{"label":"HTMLPictureElement","type":"property"},{"label":"HTMLParamElement","type":"property"},{"label":"HTMLParagraphElement","type":"property"},{"label":"HTMLOutputElement","type":"property"},{"label":"HTMLOptionsCollection","type":"property"},{"label":"HTMLOptionElement","type":"property"},{"label":"HTMLOptGroupElement","type":"property"},{"label":"HTMLOListElement","type":"property"},{"label":"HTMLObjectElement","type":"property"},{"label":"HTMLModElement","type":"property"},{"label":"HTMLMeterElement","type":"property"},{"label":"HTMLMetaElement","type":"property"},{"label":"HTMLMenuElement","type":"property"},{"label":"HTMLMediaElement","type":"property"},{"label":"HTMLMarqueeElement","type":"property"},{"label":"HTMLMapElement","type":"property"},{"label":"HTMLLinkElement","type":"property"},{"label":"HTMLLIElement","type":"property"},{"label":"HTMLLegendElement","type":"property"},{"label":"HTMLLabelElement","type":"property"},{"label":"HTMLInputElement","type":"property"},{"label":"HTMLImageElement","type":"property"},{"label":"HTMLIFrameElement","type":"property"},{"label":"HTMLHtmlElement","type":"property"},{"label":"HTMLHRElement","type":"property"},{"label":"HTMLHeadingElement","type":"property"},{"label":"HTMLHeadElement","type":"property"},{"label":"HTMLFrameSetElement","type":"property"},{"label":"HTMLFrameElement","type":"property"},{"label":"HTMLFormElement","type":"property"},{"label":"HTMLFormControlsCollection","type":"property"},{"label":"HTMLFontElement","type":"property"},{"label":"HTMLFieldSetElement","type":"property"},{"label":"HTMLEmbedElement","type":"property"},{"label":"HTMLElement","type":"property"},{"label":"HTMLDocument","type":"property"},{"label":"HTMLDListElement","type":"property"},{"label":"HTMLDivElement","type":"property"},{"label":"HTMLDirectoryElement","type":"property"},{"label":"HTMLDialogElement","type":"property"},{"label":"HTMLDetailsElement","type":"property"},{"label":"HTMLDataListElement","type":"property"},{"label":"HTMLDataElement","type":"property"},{"label":"HTMLContentElement","type":"property"},{"label":"HTMLCollection","type":"property"},{"label":"HTMLCanvasElement","type":"property"},{"label":"HTMLButtonElement","type":"property"},{"label":"HTMLBRElement","type":"property"},{"label":"HTMLBodyElement","type":"property"},{"label":"HTMLBaseElement","type":"property"},{"label":"HTMLAudioElement","type":"property"},{"label":"HTMLAreaElement","type":"property"},{"label":"HTMLAnchorElement","type":"property"},{"label":"HTMLAllCollection","type":"property"},{"label":"History","type":"property"},{"label":"history","type":"property"},{"label":"Headers","type":"property"},{"label":"HashChangeEvent","type":"property"},{"label":"Gyroscope","type":"property"},{"label":"globalThis","type":"property"},{"label":"set GLOBAL","type":"property"},{"label":"get GLOBAL","type":"property"},{"label":"global","type":"property"},{"label":"getSelection","type":"property"},{"label":"getLazyEnv","type":"property"},{"label":"getComputedStyle","type":"property"},{"label":"GamepadHapticActuator","type":"property"},{"label":"GamepadEvent","type":"property"},{"label":"GamepadButton","type":"property"},{"label":"Gamepad","type":"property"},{"label":"GainNode","type":"property"},{"label":"Function","type":"property"},{"label":"frames","type":"property"},{"label":"frameElement","type":"property"},{"label":"FormDataEvent","type":"property"},{"label":"FormData","type":"property"},{"label":"FontFaceSetLoadEvent","type":"property"},{"label":"FontFace","type":"property"},{"label":"FocusEvent","type":"property"},{"label":"focus","type":"property"},{"label":"Float64Array","type":"property"},{"label":"Float32Array","type":"property"},{"label":"find","type":"property"},{"label":"FileReader","type":"property"},{"label":"FileList","type":"property"},{"label":"File","type":"property"},{"label":"fetch","type":"property"},{"label":"FederatedCredential","type":"property"},{"label":"External","type":"property"},{"label":"external","type":"property"},{"label":"EventTarget","type":"property"},{"label":"EventSource","type":"property"},{"label":"Event","type":"property"},{"label":"event","type":"property"},{"label":"EvalError","type":"property"},{"label":"eval","type":"property"},{"label":"escape","type":"property"},{"label":"ErrorEvent","type":"property"},{"label":"Error","type":"property"},{"label":"EnterPictureInPictureEvent","type":"property"},{"label":"encodeURIComponent","type":"property"},{"label":"encodeURI","type":"property"},{"label":"ElementInternals","type":"property"},{"label":"Element","type":"property"},{"label":"DynamicsCompressorNode","type":"property"},{"label":"DragEvent","type":"property"},{"label":"DOMTokenList","type":"property"},{"label":"DOMStringMap","type":"property"},{"label":"DOMStringList","type":"property"},{"label":"DOMRectReadOnly","type":"property"},{"label":"DOMRectList","type":"property"},{"label":"DOMRect","type":"property"},{"label":"DOMQuad","type":"property"},{"label":"DOMPointReadOnly","type":"property"},{"label":"DOMPoint","type":"property"},{"label":"DOMParser","type":"property"},{"label":"DOMMatrixReadOnly","type":"property"},{"label":"DOMMatrix","type":"property"},{"label":"DOMImplementation","type":"property"},{"label":"DOMException","type":"property"},{"label":"DOMError","type":"property"},{"label":"DocumentType","type":"property"},{"label":"DocumentFragment","type":"property"},{"label":"Document","type":"property"},{"label":"document","type":"property"},{"label":"devicePixelRatio","type":"property"},{"label":"DeviceOrientationEvent","type":"property"},{"label":"DeviceMotionEventRotationRate","type":"property"},{"label":"DeviceMotionEventAcceleration","type":"property"},{"label":"DeviceMotionEvent","type":"property"},{"label":"DelayNode","type":"property"},{"label":"defaultStatus","type":"property"},{"label":"defaultstatus","type":"property"},{"label":"decodeURIComponent","type":"property"},{"label":"decodeURI","type":"property"},{"label":"Date","type":"property"},{"label":"DataView","type":"property"},{"label":"DataTransferItemList","type":"property"},{"label":"DataTransferItem","type":"property"},{"label":"DataTransfer","type":"property"},{"label":"CustomEvent","type":"property"},{"label":"CustomElementRegistry","type":"property"},{"label":"CSSVariableReferenceValue","type":"property"},{"label":"CSSUnparsedValue","type":"property"},{"label":"CSSUnitValue","type":"property"},{"label":"CSSTranslate","type":"property"},{"label":"CSSTransformValue","type":"property"},{"label":"CSSTransformComponent","type":"property"},{"label":"CSSSupportsRule","type":"property"},{"label":"CSSStyleValue","type":"property"},{"label":"CSSStyleSheet","type":"property"},{"label":"CSSStyleRule","type":"property"},{"label":"CSSStyleDeclaration","type":"property"},{"label":"CSSSkewY","type":"property"},{"label":"CSSSkewX","type":"property"},{"label":"CSSSkew","type":"property"},{"label":"CSSScale","type":"property"},{"label":"CSSRuleList","type":"property"},{"label":"CSSRule","type":"property"},{"label":"CSSRotate","type":"property"},{"label":"CSSPositionValue","type":"property"},{"label":"CSSPerspective","type":"property"},{"label":"CSSPageRule","type":"property"},{"label":"CSSNumericValue","type":"property"},{"label":"CSSNumericArray","type":"property"},{"label":"CSSNamespaceRule","type":"property"},{"label":"CSSMediaRule","type":"property"},{"label":"CSSMatrixComponent","type":"property"},{"label":"CSSMathValue","type":"property"},{"label":"CSSMathSum","type":"property"},{"label":"CSSMathProduct","type":"property"},{"label":"CSSMathNegate","type":"property"},{"label":"CSSMathMin","type":"property"},{"label":"CSSMathMax","type":"property"},{"label":"CSSMathInvert","type":"property"},{"label":"CSSKeywordValue","type":"property"},{"label":"CSSKeyframesRule","type":"property"},{"label":"CSSKeyframeRule","type":"property"},{"label":"CSSImportRule","type":"property"},{"label":"CSSImageValue","type":"property"},{"label":"CSSGroupingRule","type":"property"},{"label":"CSSFontFaceRule","type":"property"},{"label":"CSSConditionRule","type":"property"},{"label":"CSS","type":"property"},{"label":"CryptoKey","type":"property"},{"label":"Crypto","type":"property"},{"label":"CredentialsContainer","type":"property"},{"label":"Credential","type":"property"},{"label":"CountQueuingStrategy","type":"property"},{"label":"ConvolverNode","type":"property"},{"label":"ConstantSourceNode","type":"property"},{"label":"CompositionEvent","type":"property"},{"label":"Comment","type":"property"},{"label":"CloseEvent","type":"property"},{"label":"ClipboardItem","type":"property"},{"label":"ClipboardEvent","type":"property"},{"label":"Clipboard","type":"property"},{"label":"CharacterData","type":"property"},{"label":"ChannelSplitterNode","type":"property"},{"label":"ChannelMergerNode","type":"property"},{"label":"CDATASection","type":"property"},{"label":"CanvasRenderingContext2D","type":"property"},{"label":"CanvasPattern","type":"property"},{"label":"CanvasGradient","type":"property"},{"label":"CanvasCaptureMediaStreamTrack","type":"property"},{"label":"CacheStorage","type":"property"},{"label":"Cache","type":"property"},{"label":"ByteLengthQueuingStrategy","type":"property"},{"label":"set Buffer","type":"property"},{"label":"get Buffer","type":"property"},{"label":"btoa","type":"property"},{"label":"BroadcastChannel","type":"property"},{"label":"Boolean","type":"property"},{"label":"blur","type":"property"},{"label":"BluetoothUUID","type":"property"},{"label":"BluetoothRemoteGATTService","type":"property"},{"label":"BluetoothRemoteGATTServer","type":"property"},{"label":"BluetoothRemoteGATTDescriptor","type":"property"},{"label":"BluetoothRemoteGATTCharacteristic","type":"property"},{"label":"BluetoothDevice","type":"property"},{"label":"BluetoothCharacteristicProperties","type":"property"},{"label":"Bluetooth","type":"property"},{"label":"BlobEvent","type":"property"},{"label":"Blob","type":"property"},{"label":"BiquadFilterNode","type":"property"},{"label":"BigUint64Array","type":"property"},{"label":"BigInt64Array","type":"property"},{"label":"BigInt","type":"property"},{"label":"BeforeUnloadEvent","type":"property"},{"label":"BeforeInstallPromptEvent","type":"property"},{"label":"BatteryManager","type":"property"},{"label":"BaseAudioContext","type":"property"},{"label":"BarProp","type":"property"},{"label":"BackgroundFetchRegistration","type":"property"},{"label":"BackgroundFetchRecord","type":"property"},{"label":"BackgroundFetchManager","type":"property"},{"label":"AuthenticatorResponse","type":"property"},{"label":"AuthenticatorAttestationResponse","type":"property"},{"label":"AuthenticatorAssertionResponse","type":"property"},{"label":"AudioWorkletNode","type":"property"},{"label":"AudioWorklet","type":"property"},{"label":"AudioScheduledSourceNode","type":"property"},{"label":"AudioProcessingEvent","type":"property"},{"label":"AudioParamMap","type":"property"},{"label":"AudioParam","type":"property"},{"label":"AudioNode","type":"property"},{"label":"AudioListener","type":"property"},{"label":"AudioDestinationNode","type":"property"},{"label":"AudioContext","type":"property"},{"label":"AudioBufferSourceNode","type":"property"},{"label":"AudioBuffer","type":"property"},{"label":"Audio","type":"property"},{"label":"Attr","type":"property"},{"label":"Atomics","type":"property"},{"label":"atob","type":"property"},{"label":"ArrayBuffer","type":"property"},{"label":"Array","type":"property"},{"label":"ApplicationCacheErrorEvent","type":"property"},{"label":"ApplicationCache","type":"property"},{"label":"applicationCache","type":"property"},{"label":"AnimationEvent","type":"property"},{"label":"AnimationEffect","type":"property"},{"label":"Animation","type":"property"},{"label":"AnalyserNode","type":"property"},{"label":"alert","type":"property"},{"label":"Accelerometer","type":"property"},{"label":"AbsoluteOrientationSensor","type":"property"},{"label":"AbortSignal","type":"property"},{"label":"AbortController","type":"property"},{"label":"_performanceEntries","type":"property"},{"label":"__filename","type":"property"},{"label":"__dirname","type":"property"},{"label":"perf","type":"property"},{"label":"bootstrapWindow","type":"property"},{"label":"nls","type":"property"},{"label":"event_1","type":"property"},{"label":"async_1","type":"property"},{"label":"arrays","type":"property"},{"label":"this","type":"property"},{"label":"target","type":"property"},{"label":"shouldPreventDefault","type":"property"},{"label":"resolveResult","type":"property"},{"label":"keypressLabel","type":"property"},{"label":"keybinding","type":"property"},{"label":"firstPart","type":"property"},{"label":"currentChord","type":"property"},{"label":"contextValue","type":"property"},{"label":"caches","sortText":"~~caches","type":"variable"},{"label":"cancelAnimationFrame","sortText":"~~cancelAnimationFrame","type":"function"},{"label":"cancelIdleCallback","sortText":"~~cancelIdleCallback","type":"function"},{"label":"captureEvents","sortText":"~~captureEvents","type":"function"},{"label":"clearImmediate","sortText":"~~clearImmediate","type":"function"},{"label":"clearInterval","sortText":"~~clearInterval","type":"function"},{"label":"clearTimeout","sortText":"~~clearTimeout","type":"function"},{"label":"clientInformation","sortText":"~~clientInformation","type":"variable"},{"label":"close","sortText":"~~close","type":"function"},{"label":"closed","sortText":"~~closed","type":"variable"},{"label":"confirm","sortText":"~~confirm","type":"function"},{"label":"console","sortText":"~~console","type":"variable"},{"label":"createImageBitmap","sortText":"~~createImageBitmap","type":"function"},{"label":"crypto","sortText":"~~crypto","type":"variable"},{"label":"customElements","sortText":"~~customElements","type":"variable"},{"label":"constructor","sortText":"~~~constructor","type":"class"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425909078,"metadata":{"connectionId":0,"message":{"id":128,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425910441,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"contextValue","frameId":451,"context":"repl"},"type":"request","seq":58}},"level":0} {"tag":"cdp.send","timestamp":1588425910442,"metadata":{"connectionId":0,"message":{"id":129,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"contextValue","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425910443,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1630","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":12,"executionContextId":1,"hash":"3476cd018f03d45b72f3cc1d11ecacae580e6ea9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425910443,"metadata":{"connectionId":0,"message":{"id":129,"result":{"result":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":954}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"512"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425910445,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425910445,"metadata":{"connectionId":1,"message":{"seq":3463,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756709","path":"<eval>/VM633756709","sourceReference":633756709}}}},"level":0} {"tag":"dap.send","timestamp":1588425910446,"metadata":{"connectionId":1,"message":{"seq":3464,"type":"response","request_seq":58,"command":"evaluate","success":true,"body":{"variablesReference":819,"result":"Context {_id: 512, _parent: Context, _value: {…}}"}}},"level":0} {"tag":"dap.receive","timestamp":1588425910452,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":451},"type":"request","seq":59}},"level":0} {"tag":"dap.send","timestamp":1588425910452,"metadata":{"connectionId":1,"message":{"seq":3465,"type":"response","request_seq":59,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":12,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":13,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":14},{"name":"Global","expensive":true,"variablesReference":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425912536,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":60}},"level":0} {"tag":"cdp.send","timestamp":1588425912536,"metadata":{"connectionId":0,"message":{"id":130,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425912538,"metadata":{"connectionId":0,"message":{"id":130,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425912539,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425912539,"metadata":{"connectionId":1,"message":{"seq":3466,"type":"response","request_seq":60,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588425912539,"metadata":{"connectionId":1,"message":{"seq":3467,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425912578,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":61}},"level":0} {"tag":"cdp.send","timestamp":1588425912578,"metadata":{"connectionId":0,"message":{"id":131,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425912579,"metadata":{"connectionId":0,"message":{"id":131,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425912580,"metadata":{"connectionId":1,"message":{"seq":3468,"type":"response","request_seq":61,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425913740,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":955}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":956}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":957}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":958}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":959}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":960}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":961}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":962}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":963}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":964}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":965}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":966}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":967}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":968}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":969}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":970}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":971}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":972}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425913742,"metadata":{"connectionId":1,"message":{"seq":3469,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425913744,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":62}},"level":0} {"tag":"dap.send","timestamp":1588425913744,"metadata":{"connectionId":1,"message":{"seq":3470,"type":"response","request_seq":62,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425913749,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":63}},"level":0} {"tag":"dap.send","timestamp":1588425913749,"metadata":{"connectionId":1,"message":{"seq":3471,"type":"response","request_seq":63,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":458,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425913790,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":64}},"level":0} {"tag":"cdp.send","timestamp":1588425913790,"metadata":{"connectionId":0,"message":{"id":132,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425913791,"metadata":{"connectionId":0,"message":{"id":132,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425913792,"metadata":{"connectionId":1,"message":{"seq":3472,"type":"response","request_seq":64,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.send","timestamp":1588425914071,"metadata":{"connectionId":0,"message":{"seq":84,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.4,"max":0.2,"avg":0.1,"stddev":0.1,"count":3,"failed":0},"Debugger.scriptParsed.errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425914077,"metadata":{"connectionId":1,"message":{"seq":3473,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"completions":{"operation":"completions","totalTime":14.5,"max":14.5,"avg":14.5,"stddev":null,"count":1,"failed":0},"completions.errors":[],"evaluate":{"operation":"evaluate","totalTime":4.3,"max":4.3,"avg":4.3,"stddev":null,"count":1,"failed":0},"evaluate.errors":[],"scopes":{"operation":"scopes","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"scopes.errors":[],"continue":{"operation":"continue","totalTime":2.6,"max":2.6,"avg":2.6,"stddev":null,"count":1,"failed":0},"continue.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":6,"max":3.1,"avg":3,"stddev":0.2,"count":2,"failed":0},"breakpointLocations.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"stackTrace.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425914160,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":458},"type":"request","seq":65}},"level":0} {"tag":"dap.send","timestamp":1588425914160,"metadata":{"connectionId":1,"message":{"seq":3474,"type":"response","request_seq":65,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":820,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":821,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":822},{"name":"Global","expensive":true,"variablesReference":823}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425914175,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":66}},"level":0} {"tag":"dap.send","timestamp":1588425914175,"metadata":{"connectionId":1,"message":{"seq":3475,"type":"response","request_seq":66,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":459,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":460,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425915144,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"replinput","path":"replinput"},"lines":[1],"breakpoints":[{"line":1}],"sourceModified":false},"type":"request","seq":23}},"level":0} {"tag":"dap.send","timestamp":1588425915144,"metadata":{"connectionId":0,"message":{"seq":85,"type":"response","request_seq":23,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":6,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425915144,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"replinput","path":"replinput"},"lines":[1],"breakpoints":[{"line":1}],"sourceModified":false},"type":"request","seq":67}},"level":0} {"tag":"cdp.send","timestamp":1588425915145,"metadata":{"connectionId":0,"message":{"id":133,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/replinput","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425915145,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"replinput","path":"replinput"},"lines":[1],"breakpoints":[{"line":1}],"sourceModified":false},"type":"request","seq":17}},"level":0} {"tag":"cdp.send","timestamp":1588425915145,"metadata":{"connectionId":0,"message":{"id":134,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/replinput","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915146,"metadata":{"connectionId":0,"message":{"id":134,"result":{"breakpointId":"2:0:0:file:\\/\\/replinput","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425915148,"metadata":{"connectionId":3,"message":{"seq":96,"type":"response","request_seq":17,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":6,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425915154,"metadata":{"connectionId":0,"message":{"id":133,"result":{"breakpointId":"2:0:0:file:\\/\\/replinput","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425915163,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":68}},"level":0} {"tag":"cdp.send","timestamp":1588425915164,"metadata":{"connectionId":0,"message":{"id":135,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915166,"metadata":{"connectionId":0,"message":{"id":135,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425915198,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":69}},"level":0} {"tag":"cdp.send","timestamp":1588425915198,"metadata":{"connectionId":0,"message":{"id":136,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915199,"metadata":{"connectionId":0,"message":{"id":136,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425915747,"metadata":{"connectionId":1,"message":{"seq":3476,"type":"response","request_seq":67,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":6,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.send","timestamp":1588425915749,"metadata":{"connectionId":1,"message":{"seq":3477,"type":"response","request_seq":68,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.send","timestamp":1588425915754,"metadata":{"connectionId":1,"message":{"seq":3478,"type":"response","request_seq":69,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425915790,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":70}},"level":0} {"tag":"cdp.send","timestamp":1588425915790,"metadata":{"connectionId":0,"message":{"id":137,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915791,"metadata":{"connectionId":0,"message":{"id":137,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425915792,"metadata":{"connectionId":1,"message":{"seq":3479,"type":"response","request_seq":70,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425915861,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"replinput","path":"replinput"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":24}},"level":0} {"tag":"dap.send","timestamp":1588425915861,"metadata":{"connectionId":0,"message":{"seq":86,"type":"response","request_seq":24,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425915861,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"replinput","path":"replinput"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":71}},"level":0} {"tag":"cdp.send","timestamp":1588425915861,"metadata":{"connectionId":0,"message":{"id":138,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:0:0:file:\\/\\/replinput"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425915861,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"replinput","path":"replinput"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":18}},"level":0} {"tag":"cdp.send","timestamp":1588425915862,"metadata":{"connectionId":0,"message":{"id":139,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:0:0:file:\\/\\/replinput"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915863,"metadata":{"connectionId":0,"message":{"id":138,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915863,"metadata":{"connectionId":0,"message":{"id":139,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425915864,"metadata":{"connectionId":1,"message":{"seq":3480,"type":"response","request_seq":71,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425915864,"metadata":{"connectionId":3,"message":{"seq":97,"type":"response","request_seq":18,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425915896,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":72}},"level":0} {"tag":"cdp.send","timestamp":1588425915896,"metadata":{"connectionId":0,"message":{"id":140,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425915902,"metadata":{"connectionId":0,"message":{"id":140,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425915904,"metadata":{"connectionId":1,"message":{"seq":3481,"type":"response","request_seq":72,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425917064,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":73}},"level":0} {"tag":"cdp.send","timestamp":1588425917064,"metadata":{"connectionId":0,"message":{"id":141,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425917065,"metadata":{"connectionId":0,"message":{"id":141,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425917066,"metadata":{"connectionId":1,"message":{"seq":3482,"type":"response","request_seq":73,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425917078,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425917080,"metadata":{"connectionId":1,"message":{"seq":3483,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425917104,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":74}},"level":0} {"tag":"cdp.send","timestamp":1588425917104,"metadata":{"connectionId":0,"message":{"id":142,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425917109,"metadata":{"connectionId":0,"message":{"id":142,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425917111,"metadata":{"connectionId":1,"message":{"seq":3484,"type":"response","request_seq":74,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425918768,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":973}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":974}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":975}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":976}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":977}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":978}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":979}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":980}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":981}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":982}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":983}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":984}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":985}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":986}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":987}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":988}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":989}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":990}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425918770,"metadata":{"connectionId":1,"message":{"seq":3485,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425918772,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":75}},"level":0} {"tag":"dap.send","timestamp":1588425918772,"metadata":{"connectionId":1,"message":{"seq":3486,"type":"response","request_seq":75,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425918779,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":76}},"level":0} {"tag":"dap.send","timestamp":1588425918779,"metadata":{"connectionId":1,"message":{"seq":3487,"type":"response","request_seq":76,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":461,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425918814,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":77}},"level":0} {"tag":"cdp.send","timestamp":1588425918814,"metadata":{"connectionId":0,"message":{"id":143,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425918838,"metadata":{"connectionId":0,"message":{"id":143,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425918839,"metadata":{"connectionId":1,"message":{"seq":3488,"type":"response","request_seq":77,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.send","timestamp":1588425919165,"metadata":{"connectionId":1,"message":{"seq":3489,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"scopes":{"operation":"scopes","totalTime":0.6,"max":0.6,"avg":0.6,"stddev":null,"count":1,"failed":0},"scopes.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.5,"max":0.3,"avg":0.2,"stddev":0,"count":2,"failed":0},"stackTrace.errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":605.9,"max":602.7,"avg":302.9,"stddev":423.9,"count":2,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":1185.3,"max":586.3,"avg":197.5,"stddev":289.8,"count":6,"failed":0},"breakpointLocations.errors":[],"continue":{"operation":"continue","totalTime":2.7,"max":2.7,"avg":2.7,"stddev":null,"count":1,"failed":0},"continue.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425919183,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":461},"type":"request","seq":78}},"level":0} {"tag":"dap.send","timestamp":1588425919184,"metadata":{"connectionId":1,"message":{"seq":3490,"type":"response","request_seq":78,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":824,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":825,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":826},{"name":"Global","expensive":true,"variablesReference":827}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425919202,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":79}},"level":0} {"tag":"dap.send","timestamp":1588425919202,"metadata":{"connectionId":1,"message":{"seq":3491,"type":"response","request_seq":79,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":462,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":463,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.send","timestamp":1588425920147,"metadata":{"connectionId":0,"message":{"seq":87,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.6,"max":0.4,"avg":0.3,"stddev":0.2,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425920148,"metadata":{"connectionId":3,"message":{"seq":98,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":6.5,"max":3.4,"avg":3.2,"stddev":0.3,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425922082,"metadata":{"connectionId":0,"message":{"seq":88,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425924140,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":25}},"level":0} {"tag":"dap.send","timestamp":1588425924141,"metadata":{"connectionId":0,"message":{"seq":89,"type":"response","request_seq":25,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425924141,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":80}},"level":0} {"tag":"cdp.send","timestamp":1588425924141,"metadata":{"connectionId":0,"message":{"id":144,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425924141,"metadata":{"connectionId":0,"message":{"id":145,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:119:12:777"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425924141,"metadata":{"connectionId":1,"message":{"seq":3492,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":5,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588425924141,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":19}},"level":0} {"tag":"cdp.send","timestamp":1588425924141,"metadata":{"connectionId":0,"message":{"id":146,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425924142,"metadata":{"connectionId":0,"message":{"id":144,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425924142,"metadata":{"connectionId":0,"message":{"id":146,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425924142,"metadata":{"connectionId":0,"message":{"id":145,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425924143,"metadata":{"connectionId":3,"message":{"seq":99,"type":"response","request_seq":19,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425924145,"metadata":{"connectionId":1,"message":{"seq":3493,"type":"response","request_seq":80,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425924185,"metadata":{"connectionId":1,"message":{"seq":3494,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"scopes":{"operation":"scopes","totalTime":0.5,"max":0.5,"avg":0.5,"stddev":null,"count":1,"failed":0},"scopes.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"stackTrace.errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":4.3,"max":4.3,"avg":4.3,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425924572,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":81}},"level":0} {"tag":"cdp.send","timestamp":1588425924573,"metadata":{"connectionId":0,"message":{"id":147,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425924573,"metadata":{"connectionId":0,"message":{"id":147,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425924575,"metadata":{"connectionId":1,"message":{"seq":3495,"type":"response","request_seq":81,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425924627,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425924629,"metadata":{"connectionId":1,"message":{"seq":3496,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588425929143,"metadata":{"connectionId":0,"message":{"seq":90,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425929143,"metadata":{"connectionId":3,"message":{"seq":100,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":1.2,"max":1.2,"avg":1.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425929579,"metadata":{"connectionId":1,"message":{"seq":3497,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"continue":{"operation":"continue","totalTime":2.3,"max":2.3,"avg":2.3,"stddev":null,"count":1,"failed":0},"continue.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425929632,"metadata":{"connectionId":0,"message":{"seq":91,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425930940,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":26}},"level":0} {"tag":"dap.send","timestamp":1588425930940,"metadata":{"connectionId":0,"message":{"seq":92,"type":"response","request_seq":26,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":7,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425930940,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":82}},"level":0} {"tag":"cdp.send","timestamp":1588425930940,"metadata":{"connectionId":0,"message":{"id":148,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425930941,"metadata":{"connectionId":0,"message":{"id":149,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"777","lineNumber":119,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588425930941,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":20}},"level":0} {"tag":"cdp.send","timestamp":1588425930941,"metadata":{"connectionId":0,"message":{"id":150,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425930944,"metadata":{"connectionId":0,"message":{"id":150,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425930945,"metadata":{"connectionId":3,"message":{"seq":101,"type":"response","request_seq":20,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":7,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425930961,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":83}},"level":0} {"tag":"cdp.send","timestamp":1588425930962,"metadata":{"connectionId":0,"message":{"id":151,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425931028,"metadata":{"connectionId":0,"message":{"id":148,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425931104,"metadata":{"connectionId":0,"message":{"id":149,"result":{"breakpointId":"4:119:12:777","actualLocation":{"scriptId":"777","lineNumber":119,"columnNumber":34}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425931105,"metadata":{"connectionId":0,"message":{"id":151,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425931155,"metadata":{"connectionId":1,"message":{"seq":3498,"type":"response","request_seq":82,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":7,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178,"column":25}]}}},"level":0} {"tag":"dap.send","timestamp":1588425931156,"metadata":{"connectionId":1,"message":{"seq":3499,"type":"response","request_seq":83,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425931192,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":84}},"level":0} {"tag":"cdp.send","timestamp":1588425931193,"metadata":{"connectionId":0,"message":{"id":152,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425931193,"metadata":{"connectionId":0,"message":{"id":152,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425931195,"metadata":{"connectionId":1,"message":{"seq":3500,"type":"response","request_seq":84,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588425931975,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":991}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":992}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":993}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":994}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":995}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":996}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":997}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":998}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":999}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1000}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1001}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1002}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1003}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1004}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1005}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1006}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1007}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1008}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425931977,"metadata":{"connectionId":1,"message":{"seq":3501,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425931979,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":85}},"level":0} {"tag":"dap.send","timestamp":1588425931979,"metadata":{"connectionId":1,"message":{"seq":3502,"type":"response","request_seq":85,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425931982,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":86}},"level":0} {"tag":"dap.send","timestamp":1588425931982,"metadata":{"connectionId":1,"message":{"seq":3503,"type":"response","request_seq":86,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":464,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425932028,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":87}},"level":0} {"tag":"cdp.send","timestamp":1588425932028,"metadata":{"connectionId":0,"message":{"id":153,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425932029,"metadata":{"connectionId":0,"message":{"id":153,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425932030,"metadata":{"connectionId":1,"message":{"seq":3504,"type":"response","request_seq":87,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425932391,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":464},"type":"request","seq":88}},"level":0} {"tag":"dap.send","timestamp":1588425932391,"metadata":{"connectionId":1,"message":{"seq":3505,"type":"response","request_seq":88,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":828,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":829,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":830},{"name":"Global","expensive":true,"variablesReference":831}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425932408,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":89}},"level":0} {"tag":"dap.send","timestamp":1588425932409,"metadata":{"connectionId":1,"message":{"seq":3506,"type":"response","request_seq":89,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":465,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":466,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425934857,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"contextValue","frameId":464,"context":"repl"},"type":"request","seq":90}},"level":0} {"tag":"cdp.send","timestamp":1588425934857,"metadata":{"connectionId":0,"message":{"id":154,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"contextValue","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425934859,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1631","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":12,"executionContextId":1,"hash":"3476cd018f03d45b72f3cc1d11ecacae580e6ea9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425934859,"metadata":{"connectionId":0,"message":{"id":154,"result":{"result":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1009}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"512"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588425934859,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588425934860,"metadata":{"connectionId":1,"message":{"seq":3507,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756710","path":"<eval>/VM633756710","sourceReference":633756710}}}},"level":0} {"tag":"dap.send","timestamp":1588425934861,"metadata":{"connectionId":1,"message":{"seq":3508,"type":"response","request_seq":90,"command":"evaluate","success":true,"body":{"variablesReference":832,"result":"Context {_id: 512, _parent: Context, _value: {…}}"}}},"level":0} {"tag":"dap.receive","timestamp":1588425934866,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":464},"type":"request","seq":91}},"level":0} {"tag":"dap.send","timestamp":1588425934866,"metadata":{"connectionId":1,"message":{"seq":3509,"type":"response","request_seq":91,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":828,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":829,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":830},{"name":"Global","expensive":true,"variablesReference":831}]}}},"level":0} {"tag":"dap.send","timestamp":1588425935943,"metadata":{"connectionId":0,"message":{"seq":93,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425935944,"metadata":{"connectionId":3,"message":{"seq":102,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":4.4,"max":4.4,"avg":4.4,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425936156,"metadata":{"connectionId":1,"message":{"seq":3510,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":215.5,"max":215.5,"avg":215.5,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":200.4,"max":195,"avg":66.8,"stddev":111,"count":3,"failed":0},"breakpointLocations.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.4,"max":0.2,"avg":0.2,"stddev":0,"count":2,"failed":0},"stackTrace.errors":[],"scopes":{"operation":"scopes","totalTime":0.8,"max":0.4,"avg":0.4,"stddev":0,"count":2,"failed":0},"scopes.errors":[],"evaluate":{"operation":"evaluate","totalTime":3.6,"max":3.6,"avg":3.6,"stddev":null,"count":1,"failed":0},"evaluate.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425936980,"metadata":{"connectionId":0,"message":{"seq":94,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425937425,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":819},"type":"request","seq":92}},"level":0} {"tag":"cdp.send","timestamp":1588425937425,"metadata":{"connectionId":0,"message":{"id":155,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":954}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425937426,"metadata":{"connectionId":0,"message":{"id":156,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":954}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425937427,"metadata":{"connectionId":0,"message":{"id":155,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1010}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1011}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425937427,"metadata":{"connectionId":0,"message":{"id":156,"result":{"result":[{"name":"_id","value":{"type":"number","value":512,"description":"512"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1012}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"1"},{"name":"_parent","type":"object","value":"ConfigAwareContextValuesContainer"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1013}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"512"},{"name":"editorId","type":"string","value":"vs.editor.ICodeEditor:35"},{"name":"editorSimpleInput","type":"boolean","value":"false"},{"name":"editorFocus","type":"boolean","value":"true"},{"name":"textInputFocus","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1014}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425937429,"metadata":{"connectionId":1,"message":{"seq":3511,"type":"response","request_seq":92,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"512","evaluateName":"_id","type":"number","variablesReference":0},{"name":"_parent","value":"Context {_id: 1, _parent: ConfigAwareContextValuesContainer, _value: {…}}","evaluateName":"_parent","type":"object","variablesReference":834},{"name":"_value","value":"{_contextId: 512, editorId: 'vs.editor.ICodeEditor:35', editorSimpleInput: false, editorFocus: true, textInputFocus: true}","evaluateName":"_value","type":"object","variablesReference":835},{"name":"__proto__","value":"Object","evaluateName":"__proto__","type":"object","variablesReference":833}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425939691,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":832},"type":"request","seq":93}},"level":0} {"tag":"cdp.send","timestamp":1588425939691,"metadata":{"connectionId":0,"message":{"id":157,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1009}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425939691,"metadata":{"connectionId":0,"message":{"id":158,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1009}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425939692,"metadata":{"connectionId":0,"message":{"id":157,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1015}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1016}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425939693,"metadata":{"connectionId":0,"message":{"id":158,"result":{"result":[{"name":"_id","value":{"type":"number","value":512,"description":"512"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1017}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"1"},{"name":"_parent","type":"object","value":"ConfigAwareContextValuesContainer"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1018}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"512"},{"name":"editorId","type":"string","value":"vs.editor.ICodeEditor:35"},{"name":"editorSimpleInput","type":"boolean","value":"false"},{"name":"editorFocus","type":"boolean","value":"true"},{"name":"textInputFocus","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1019}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425939694,"metadata":{"connectionId":1,"message":{"seq":3512,"type":"response","request_seq":93,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"512","evaluateName":"_id","type":"number","variablesReference":0},{"name":"_parent","value":"Context {_id: 1, _parent: ConfigAwareContextValuesContainer, _value: {…}}","evaluateName":"_parent","type":"object","variablesReference":837},{"name":"_value","value":"{_contextId: 512, editorId: 'vs.editor.ICodeEditor:35', editorSimpleInput: false, editorFocus: true, textInputFocus: true}","evaluateName":"_value","type":"object","variablesReference":838},{"name":"__proto__","value":"Object","evaluateName":"__proto__","type":"object","variablesReference":836}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425940994,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":838},"type":"request","seq":94}},"level":0} {"tag":"cdp.send","timestamp":1588425940994,"metadata":{"connectionId":0,"message":{"id":159,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1018}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425940994,"metadata":{"connectionId":0,"message":{"id":160,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1018}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425940995,"metadata":{"connectionId":0,"message":{"id":159,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425940996,"metadata":{"connectionId":0,"message":{"id":160,"result":{"result":[{"name":"_contextId","value":{"type":"number","value":512,"description":"512"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorId","value":{"type":"string","value":"vs.editor.ICodeEditor:35"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorSimpleInput","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorFocus","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"textInputFocus","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorTextFocus","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorTabMovesFocus","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorReadonly","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorColumnSelection","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasMultipleSelections","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasSelection","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"canUndo","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"canRedo","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorLangId","value":{"type":"string","value":"markdown"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCompletionItemProvider","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCodeActionsProvider","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCodeLensProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDefinitionProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDeclarationProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasImplementationProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasTypeDefinitionProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasHoverProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentHighlightProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentSymbolProvider","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasReferenceProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasRenameProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasSignatureHelpProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasDocumentSelectionFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasMultipleDocumentFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasMultipleDocumentSelectionFormattingProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isInEmbeddedEditor","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"accessibilityHelpWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"messageVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"onTypeRenameInputVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"foldingEnabled","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"inSnippetMode","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasNextTabstop","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasPrevTabstop","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"supportedCodeAction","value":{"type":"string","value":""},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"parameterHintsVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"parameterHintsMultipleSignatures","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"atEndOfWord","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"acceptSuggestionOnEnter","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"findWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breakpointWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"dirtyDiffVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"callHierarchyVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorHasCallHierarchyProvider","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"markersNavigationVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"referenceSearchVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isWordWrapMinified","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isDominatedByLongLines","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"inDiffEditor","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasWordHighlights","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"renameInputVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestWidgetVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestWidgetDetailsVisible","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestWidgetMultipleSuggestions","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestionMakesTextEdit","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestionHasInsertAndReplaceRange","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"suggestionCanResolve","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"hasOtherSuggestions","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425940998,"metadata":{"connectionId":1,"message":{"seq":3513,"type":"response","request_seq":94,"command":"variables","success":true,"body":{"variables":[{"name":"_contextId","value":"512","evaluateName":"_value._contextId","type":"number","variablesReference":0},{"name":"acceptSuggestionOnEnter","value":"true","evaluateName":"_value.acceptSuggestionOnEnter","type":"boolean","variablesReference":0},{"name":"accessibilityHelpWidgetVisible","value":"false","evaluateName":"_value.accessibilityHelpWidgetVisible","type":"boolean","variablesReference":0},{"name":"atEndOfWord","value":"false","evaluateName":"_value.atEndOfWord","type":"boolean","variablesReference":0},{"name":"breakpointWidgetVisible","value":"false","evaluateName":"_value.breakpointWidgetVisible","type":"boolean","variablesReference":0},{"name":"callHierarchyVisible","value":"false","evaluateName":"_value.callHierarchyVisible","type":"boolean","variablesReference":0},{"name":"canRedo","value":"false","evaluateName":"_value.canRedo","type":"boolean","variablesReference":0},{"name":"canUndo","value":"false","evaluateName":"_value.canUndo","type":"boolean","variablesReference":0},{"name":"dirtyDiffVisible","value":"false","evaluateName":"_value.dirtyDiffVisible","type":"boolean","variablesReference":0},{"name":"editorColumnSelection","value":"false","evaluateName":"_value.editorColumnSelection","type":"boolean","variablesReference":0},{"name":"editorFocus","value":"true","evaluateName":"_value.editorFocus","type":"boolean","variablesReference":0},{"name":"editorHasCallHierarchyProvider","value":"false","evaluateName":"_value.editorHasCallHierarchyProvider","type":"boolean","variablesReference":0},{"name":"editorHasCodeActionsProvider","value":"true","evaluateName":"_value.editorHasCodeActionsProvider","type":"boolean","variablesReference":0},{"name":"editorHasCodeLensProvider","value":"false","evaluateName":"_value.editorHasCodeLensProvider","type":"boolean","variablesReference":0},{"name":"editorHasCompletionItemProvider","value":"true","evaluateName":"_value.editorHasCompletionItemProvider","type":"boolean","variablesReference":0},{"name":"editorHasDeclarationProvider","value":"false","evaluateName":"_value.editorHasDeclarationProvider","type":"boolean","variablesReference":0},{"name":"editorHasDefinitionProvider","value":"false","evaluateName":"_value.editorHasDefinitionProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentFormattingProvider","value":"false","evaluateName":"_value.editorHasDocumentFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentHighlightProvider","value":"false","evaluateName":"_value.editorHasDocumentHighlightProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentSelectionFormattingProvider","value":"false","evaluateName":"_value.editorHasDocumentSelectionFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasDocumentSymbolProvider","value":"true","evaluateName":"_value.editorHasDocumentSymbolProvider","type":"boolean","variablesReference":0},{"name":"editorHasHoverProvider","value":"false","evaluateName":"_value.editorHasHoverProvider","type":"boolean","variablesReference":0},{"name":"editorHasImplementationProvider","value":"false","evaluateName":"_value.editorHasImplementationProvider","type":"boolean","variablesReference":0},{"name":"editorHasMultipleDocumentFormattingProvider","value":"false","evaluateName":"_value.editorHasMultipleDocumentFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasMultipleDocumentSelectionFormattingProvider","value":"false","evaluateName":"_value.editorHasMultipleDocumentSelectionFormattingProvider","type":"boolean","variablesReference":0},{"name":"editorHasMultipleSelections","value":"false","evaluateName":"_value.editorHasMultipleSelections","type":"boolean","variablesReference":0},{"name":"editorHasReferenceProvider","value":"false","evaluateName":"_value.editorHasReferenceProvider","type":"boolean","variablesReference":0},{"name":"editorHasRenameProvider","value":"false","evaluateName":"_value.editorHasRenameProvider","type":"boolean","variablesReference":0},{"name":"editorHasSelection","value":"false","evaluateName":"_value.editorHasSelection","type":"boolean","variablesReference":0},{"name":"editorHasSignatureHelpProvider","value":"false","evaluateName":"_value.editorHasSignatureHelpProvider","type":"boolean","variablesReference":0},{"name":"editorHasTypeDefinitionProvider","value":"false","evaluateName":"_value.editorHasTypeDefinitionProvider","type":"boolean","variablesReference":0},{"name":"editorId","value":"'vs.editor.ICodeEditor:35'","evaluateName":"_value.editorId","type":"string","variablesReference":0},{"name":"editorLangId","value":"'markdown'","evaluateName":"_value.editorLangId","type":"string","variablesReference":0},{"name":"editorReadonly","value":"false","evaluateName":"_value.editorReadonly","type":"boolean","variablesReference":0},{"name":"editorSimpleInput","value":"false","evaluateName":"_value.editorSimpleInput","type":"boolean","variablesReference":0},{"name":"editorTabMovesFocus","value":"false","evaluateName":"_value.editorTabMovesFocus","type":"boolean","variablesReference":0},{"name":"editorTextFocus","value":"true","evaluateName":"_value.editorTextFocus","type":"boolean","variablesReference":0},{"name":"findWidgetVisible","value":"false","evaluateName":"_value.findWidgetVisible","type":"boolean","variablesReference":0},{"name":"foldingEnabled","value":"true","evaluateName":"_value.foldingEnabled","type":"boolean","variablesReference":0},{"name":"hasNextTabstop","value":"false","evaluateName":"_value.hasNextTabstop","type":"boolean","variablesReference":0},{"name":"hasOtherSuggestions","value":"false","evaluateName":"_value.hasOtherSuggestions","type":"boolean","variablesReference":0},{"name":"hasPrevTabstop","value":"false","evaluateName":"_value.hasPrevTabstop","type":"boolean","variablesReference":0},{"name":"hasWordHighlights","value":"false","evaluateName":"_value.hasWordHighlights","type":"boolean","variablesReference":0},{"name":"inDiffEditor","value":"false","evaluateName":"_value.inDiffEditor","type":"boolean","variablesReference":0},{"name":"inSnippetMode","value":"false","evaluateName":"_value.inSnippetMode","type":"boolean","variablesReference":0},{"name":"isDominatedByLongLines","value":"false","evaluateName":"_value.isDominatedByLongLines","type":"boolean","variablesReference":0},{"name":"isInEmbeddedEditor","value":"false","evaluateName":"_value.isInEmbeddedEditor","type":"boolean","variablesReference":0},{"name":"isWordWrapMinified","value":"false","evaluateName":"_value.isWordWrapMinified","type":"boolean","variablesReference":0},{"name":"markersNavigationVisible","value":"false","evaluateName":"_value.markersNavigationVisible","type":"boolean","variablesReference":0},{"name":"messageVisible","value":"false","evaluateName":"_value.messageVisible","type":"boolean","variablesReference":0},{"name":"onTypeRenameInputVisible","value":"false","evaluateName":"_value.onTypeRenameInputVisible","type":"boolean","variablesReference":0},{"name":"parameterHintsMultipleSignatures","value":"false","evaluateName":"_value.parameterHintsMultipleSignatures","type":"boolean","variablesReference":0},{"name":"parameterHintsVisible","value":"false","evaluateName":"_value.parameterHintsVisible","type":"boolean","variablesReference":0},{"name":"referenceSearchVisible","value":"false","evaluateName":"_value.referenceSearchVisible","type":"boolean","variablesReference":0},{"name":"renameInputVisible","value":"false","evaluateName":"_value.renameInputVisible","type":"boolean","variablesReference":0},{"name":"suggestionCanResolve","value":"false","evaluateName":"_value.suggestionCanResolve","type":"boolean","variablesReference":0},{"name":"suggestionHasInsertAndReplaceRange","value":"false","evaluateName":"_value.suggestionHasInsertAndReplaceRange","type":"boolean","variablesReference":0},{"name":"suggestionMakesTextEdit","value":"true","evaluateName":"_value.suggestionMakesTextEdit","type":"boolean","variablesReference":0},{"name":"suggestWidgetDetailsVisible","value":"false","evaluateName":"_value.suggestWidgetDetailsVisible","type":"boolean","variablesReference":0},{"name":"suggestWidgetMultipleSuggestions","value":"false","evaluateName":"_value.suggestWidgetMultipleSuggestions","type":"boolean","variablesReference":0},{"name":"suggestWidgetVisible","value":"false","evaluateName":"_value.suggestWidgetVisible","type":"boolean","variablesReference":0},{"name":"supportedCodeAction","value":"''","evaluateName":"_value.supportedCodeAction","type":"string","variablesReference":0},{"name":"textInputFocus","value":"true","evaluateName":"_value.textInputFocus","type":"boolean","variablesReference":0}]}}},"level":0} {"tag":"dap.send","timestamp":1588425942433,"metadata":{"connectionId":1,"message":{"seq":3514,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"variables":{"operation":"variables","totalTime":11.3,"max":4.3,"avg":3.8,"stddev":0.5,"count":3,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425953124,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":837},"type":"request","seq":95}},"level":0} {"tag":"cdp.send","timestamp":1588425953124,"metadata":{"connectionId":0,"message":{"id":161,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1017}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425953124,"metadata":{"connectionId":0,"message":{"id":162,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1017}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425953126,"metadata":{"connectionId":0,"message":{"id":161,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1020}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1021}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425953127,"metadata":{"connectionId":0,"message":{"id":162,"result":{"result":[{"name":"_id","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"ConfigAwareContextValuesContainer","description":"ConfigAwareContextValuesContainer","objectId":"{\"injectedScriptId\":1,\"id\":1022}","preview":{"type":"object","description":"ConfigAwareContextValuesContainer","overflow":true,"properties":[{"name":"_id","type":"number","value":"0"},{"name":"_parent","type":"object","value":"null","subtype":"null"},{"name":"_value","type":"object","value":"Object"},{"name":"_configurationService","type":"object","value":"WorkspaceService"},{"name":"_values","type":"object","value":"Map(19)","subtype":"map"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1023}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"1"},{"name":"groupActiveEditorDirty","type":"boolean","value":"true"},{"name":"groupEditorsCount","type":"number","value":"1"},{"name":"editorPinned","type":"boolean","value":"true"},{"name":"breadcrumbsPossible","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1024}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425953130,"metadata":{"connectionId":1,"message":{"seq":3515,"type":"response","request_seq":95,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"1","evaluateName":"_parent._id","type":"number","variablesReference":0},{"name":"_parent","value":"ConfigAwareContextValuesContainer {_id: 0, _parent: null, _value: {…}, _configurationService: WorkspaceService, _values: Map(19)}","evaluateName":"_parent._parent","type":"object","variablesReference":840},{"name":"_value","value":"{_contextId: 1, groupActiveEditorDirty: true, groupEditorsCount: 1, editorPinned: true, breadcrumbsPossible: true}","evaluateName":"_parent._value","type":"object","variablesReference":841},{"name":"__proto__","value":"Object","evaluateName":"_parent.__proto__","type":"object","variablesReference":839}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425956197,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":841},"type":"request","seq":96}},"level":0} {"tag":"cdp.send","timestamp":1588425956198,"metadata":{"connectionId":0,"message":{"id":163,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1023}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425956198,"metadata":{"connectionId":0,"message":{"id":164,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1023}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425956199,"metadata":{"connectionId":0,"message":{"id":163,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425956199,"metadata":{"connectionId":0,"message":{"id":164,"result":{"result":[{"name":"_contextId","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"groupActiveEditorDirty","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"groupEditorsCount","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorPinned","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsPossible","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsVisible","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsActive","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resource","value":{"type":"object","className":"_URI","description":"_URI","objectId":"{\"injectedScriptId\":1,\"id\":1025}","preview":{"type":"object","description":"_URI","overflow":true,"properties":[{"name":"scheme","type":"string","value":"file"},{"name":"authority","type":"string","value":""},{"name":"path","type":"string","value":"/Users/roblou/code/notebook-test/samples/runCode_iframe_form_15.ipynb"},{"name":"query","type":"string","value":""},{"name":"fragment","type":"string","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceScheme","value":{"type":"string","value":"file"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceFilename","value":{"type":"string","value":"runCode_iframe_form_15.ipynb"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceLangId","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceExtname","value":{"type":"string","value":".ipynb"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceSet","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isFileSystemResource","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditorCursorAtBoundary","value":{"type":"string","value":"bottom"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditorFocused","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditable","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookRunnable","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookExecuting","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookFindWidgetFocused","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425956201,"metadata":{"connectionId":1,"message":{"seq":3516,"type":"response","request_seq":96,"command":"variables","success":true,"body":{"variables":[{"name":"_contextId","value":"1","evaluateName":"_parent._value._contextId","type":"number","variablesReference":0},{"name":"breadcrumbsActive","value":"false","evaluateName":"_parent._value.breadcrumbsActive","type":"boolean","variablesReference":0},{"name":"breadcrumbsPossible","value":"true","evaluateName":"_parent._value.breadcrumbsPossible","type":"boolean","variablesReference":0},{"name":"breadcrumbsVisible","value":"true","evaluateName":"_parent._value.breadcrumbsVisible","type":"boolean","variablesReference":0},{"name":"editorPinned","value":"true","evaluateName":"_parent._value.editorPinned","type":"boolean","variablesReference":0},{"name":"groupActiveEditorDirty","value":"true","evaluateName":"_parent._value.groupActiveEditorDirty","type":"boolean","variablesReference":0},{"name":"groupEditorsCount","value":"1","evaluateName":"_parent._value.groupEditorsCount","type":"number","variablesReference":0},{"name":"isFileSystemResource","value":"true","evaluateName":"_parent._value.isFileSystemResource","type":"boolean","variablesReference":0},{"name":"notebookEditable","value":"true","evaluateName":"_parent._value.notebookEditable","type":"boolean","variablesReference":0},{"name":"notebookEditorCursorAtBoundary","value":"'bottom'","evaluateName":"_parent._value.notebookEditorCursorAtBoundary","type":"string","variablesReference":0},{"name":"notebookEditorFocused","value":"true","evaluateName":"_parent._value.notebookEditorFocused","type":"boolean","variablesReference":0},{"name":"notebookExecuting","value":"false","evaluateName":"_parent._value.notebookExecuting","type":"boolean","variablesReference":0},{"name":"notebookFindWidgetFocused","value":"false","evaluateName":"_parent._value.notebookFindWidgetFocused","type":"boolean","variablesReference":0},{"name":"notebookRunnable","value":"true","evaluateName":"_parent._value.notebookRunnable","type":"boolean","variablesReference":0},{"name":"resource","value":"_URI {scheme: 'file', authority: '', path: '/Users/roblou/code/notebook-test/samples/runCode_iframe_form_15.ipynb', query: '', fragment: ''}","evaluateName":"_parent._value.resource","type":"object","variablesReference":842},{"name":"resourceExtname","value":"'.ipynb'","evaluateName":"_parent._value.resourceExtname","type":"string","variablesReference":0},{"name":"resourceFilename","value":"'runCode_iframe_form_15.ipynb'","evaluateName":"_parent._value.resourceFilename","type":"string","variablesReference":0},{"name":"resourceLangId","value":"null","evaluateName":"_parent._value.resourceLangId","type":"object","variablesReference":0},{"name":"resourceScheme","value":"'file'","evaluateName":"_parent._value.resourceScheme","type":"string","variablesReference":0},{"name":"resourceSet","value":"true","evaluateName":"_parent._value.resourceSet","type":"boolean","variablesReference":0}]}}},"level":0} {"tag":"dap.send","timestamp":1588425958134,"metadata":{"connectionId":1,"message":{"seq":3517,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"variables":{"operation":"variables","totalTime":9.8,"max":5.8,"avg":4.9,"stddev":1.3,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425962750,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":834},"type":"request","seq":97}},"level":0} {"tag":"cdp.send","timestamp":1588425962750,"metadata":{"connectionId":0,"message":{"id":165,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1012}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425962750,"metadata":{"connectionId":0,"message":{"id":166,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1012}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425962751,"metadata":{"connectionId":0,"message":{"id":165,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1026}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1027}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425962752,"metadata":{"connectionId":0,"message":{"id":166,"result":{"result":[{"name":"_id","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"ConfigAwareContextValuesContainer","description":"ConfigAwareContextValuesContainer","objectId":"{\"injectedScriptId\":1,\"id\":1028}","preview":{"type":"object","description":"ConfigAwareContextValuesContainer","overflow":true,"properties":[{"name":"_id","type":"number","value":"0"},{"name":"_parent","type":"object","value":"null","subtype":"null"},{"name":"_value","type":"object","value":"Object"},{"name":"_configurationService","type":"object","value":"WorkspaceService"},{"name":"_values","type":"object","value":"Map(19)","subtype":"map"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1029}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"1"},{"name":"groupActiveEditorDirty","type":"boolean","value":"true"},{"name":"groupEditorsCount","type":"number","value":"1"},{"name":"editorPinned","type":"boolean","value":"true"},{"name":"breadcrumbsPossible","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1030}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425962754,"metadata":{"connectionId":1,"message":{"seq":3518,"type":"response","request_seq":97,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"1","evaluateName":"_parent._id","type":"number","variablesReference":0},{"name":"_parent","value":"ConfigAwareContextValuesContainer {_id: 0, _parent: null, _value: {…}, _configurationService: WorkspaceService, _values: Map(19)}","evaluateName":"_parent._parent","type":"object","variablesReference":844},{"name":"_value","value":"{_contextId: 1, groupActiveEditorDirty: true, groupEditorsCount: 1, editorPinned: true, breadcrumbsPossible: true}","evaluateName":"_parent._value","type":"object","variablesReference":845},{"name":"__proto__","value":"Object","evaluateName":"_parent.__proto__","type":"object","variablesReference":843}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425963572,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":845},"type":"request","seq":98}},"level":0} {"tag":"cdp.send","timestamp":1588425963572,"metadata":{"connectionId":0,"message":{"id":167,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1029}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425963572,"metadata":{"connectionId":0,"message":{"id":168,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1029}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425963574,"metadata":{"connectionId":0,"message":{"id":167,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425963575,"metadata":{"connectionId":0,"message":{"id":168,"result":{"result":[{"name":"_contextId","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"groupActiveEditorDirty","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"groupEditorsCount","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorPinned","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsPossible","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsVisible","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsActive","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resource","value":{"type":"object","className":"_URI","description":"_URI","objectId":"{\"injectedScriptId\":1,\"id\":1031}","preview":{"type":"object","description":"_URI","overflow":true,"properties":[{"name":"scheme","type":"string","value":"file"},{"name":"authority","type":"string","value":""},{"name":"path","type":"string","value":"/Users/roblou/code/notebook-test/samples/runCode_iframe_form_15.ipynb"},{"name":"query","type":"string","value":""},{"name":"fragment","type":"string","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceScheme","value":{"type":"string","value":"file"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceFilename","value":{"type":"string","value":"runCode_iframe_form_15.ipynb"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceLangId","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceExtname","value":{"type":"string","value":".ipynb"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceSet","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isFileSystemResource","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditorCursorAtBoundary","value":{"type":"string","value":"bottom"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditorFocused","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditable","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookRunnable","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookExecuting","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookFindWidgetFocused","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425963578,"metadata":{"connectionId":1,"message":{"seq":3519,"type":"response","request_seq":98,"command":"variables","success":true,"body":{"variables":[{"name":"_contextId","value":"1","evaluateName":"_parent._value._contextId","type":"number","variablesReference":0},{"name":"breadcrumbsActive","value":"false","evaluateName":"_parent._value.breadcrumbsActive","type":"boolean","variablesReference":0},{"name":"breadcrumbsPossible","value":"true","evaluateName":"_parent._value.breadcrumbsPossible","type":"boolean","variablesReference":0},{"name":"breadcrumbsVisible","value":"true","evaluateName":"_parent._value.breadcrumbsVisible","type":"boolean","variablesReference":0},{"name":"editorPinned","value":"true","evaluateName":"_parent._value.editorPinned","type":"boolean","variablesReference":0},{"name":"groupActiveEditorDirty","value":"true","evaluateName":"_parent._value.groupActiveEditorDirty","type":"boolean","variablesReference":0},{"name":"groupEditorsCount","value":"1","evaluateName":"_parent._value.groupEditorsCount","type":"number","variablesReference":0},{"name":"isFileSystemResource","value":"true","evaluateName":"_parent._value.isFileSystemResource","type":"boolean","variablesReference":0},{"name":"notebookEditable","value":"true","evaluateName":"_parent._value.notebookEditable","type":"boolean","variablesReference":0},{"name":"notebookEditorCursorAtBoundary","value":"'bottom'","evaluateName":"_parent._value.notebookEditorCursorAtBoundary","type":"string","variablesReference":0},{"name":"notebookEditorFocused","value":"true","evaluateName":"_parent._value.notebookEditorFocused","type":"boolean","variablesReference":0},{"name":"notebookExecuting","value":"false","evaluateName":"_parent._value.notebookExecuting","type":"boolean","variablesReference":0},{"name":"notebookFindWidgetFocused","value":"false","evaluateName":"_parent._value.notebookFindWidgetFocused","type":"boolean","variablesReference":0},{"name":"notebookRunnable","value":"true","evaluateName":"_parent._value.notebookRunnable","type":"boolean","variablesReference":0},{"name":"resource","value":"_URI {scheme: 'file', authority: '', path: '/Users/roblou/code/notebook-test/samples/runCode_iframe_form_15.ipynb', query: '', fragment: ''}","evaluateName":"_parent._value.resource","type":"object","variablesReference":846},{"name":"resourceExtname","value":"'.ipynb'","evaluateName":"_parent._value.resourceExtname","type":"string","variablesReference":0},{"name":"resourceFilename","value":"'runCode_iframe_form_15.ipynb'","evaluateName":"_parent._value.resourceFilename","type":"string","variablesReference":0},{"name":"resourceLangId","value":"null","evaluateName":"_parent._value.resourceLangId","type":"object","variablesReference":0},{"name":"resourceScheme","value":"'file'","evaluateName":"_parent._value.resourceScheme","type":"string","variablesReference":0},{"name":"resourceSet","value":"true","evaluateName":"_parent._value.resourceSet","type":"boolean","variablesReference":0}]}}},"level":0} {"tag":"dap.send","timestamp":1588425967755,"metadata":{"connectionId":1,"message":{"seq":3520,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"variables":{"operation":"variables","totalTime":9.5,"max":6,"avg":4.7,"stddev":1.8,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588425979134,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":99}},"level":0} {"tag":"cdp.send","timestamp":1588425979134,"metadata":{"connectionId":0,"message":{"id":169,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425979135,"metadata":{"connectionId":0,"message":{"id":169,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425979137,"metadata":{"connectionId":1,"message":{"seq":3521,"type":"response","request_seq":99,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425979160,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425979161,"metadata":{"connectionId":1,"message":{"seq":3522,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588425984137,"metadata":{"connectionId":1,"message":{"seq":3523,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"continue":{"operation":"continue","totalTime":2.7,"max":2.7,"avg":2.7,"stddev":null,"count":1,"failed":0},"continue.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425984161,"metadata":{"connectionId":0,"message":{"seq":95,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425984335,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1032}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1033}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1034}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1035}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1036}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1037}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1038}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1039}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1040}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1041}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1042}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1043}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1044}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1045}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1046}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1047}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1048}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1049}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425984336,"metadata":{"connectionId":1,"message":{"seq":3524,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588425984338,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":100}},"level":0} {"tag":"dap.send","timestamp":1588425984338,"metadata":{"connectionId":1,"message":{"seq":3525,"type":"response","request_seq":100,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425984342,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":101}},"level":0} {"tag":"dap.send","timestamp":1588425984343,"metadata":{"connectionId":1,"message":{"seq":3526,"type":"response","request_seq":101,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":467,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425984438,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":102}},"level":0} {"tag":"cdp.send","timestamp":1588425984438,"metadata":{"connectionId":0,"message":{"id":170,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425984449,"metadata":{"connectionId":0,"message":{"id":170,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425984454,"metadata":{"connectionId":1,"message":{"seq":3527,"type":"response","request_seq":102,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425984497,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":103}},"level":0} {"tag":"cdp.send","timestamp":1588425984497,"metadata":{"connectionId":0,"message":{"id":171,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425984498,"metadata":{"connectionId":0,"message":{"id":171,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425984498,"metadata":{"connectionId":1,"message":{"seq":3528,"type":"response","request_seq":103,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425984886,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":104}},"level":0} {"tag":"dap.send","timestamp":1588425984886,"metadata":{"connectionId":1,"message":{"seq":3529,"type":"response","request_seq":104,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":468,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":469,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588425986588,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":467},"type":"request","seq":105}},"level":0} {"tag":"dap.send","timestamp":1588425986588,"metadata":{"connectionId":1,"message":{"seq":3530,"type":"response","request_seq":105,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":847,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":848,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":849},{"name":"Global","expensive":true,"variablesReference":850}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425986594,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":847},"type":"request","seq":106}},"level":0} {"tag":"cdp.send","timestamp":1588425986594,"metadata":{"connectionId":0,"message":{"id":172,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1032}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425986594,"metadata":{"connectionId":0,"message":{"id":173,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1032}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425986597,"metadata":{"connectionId":0,"message":{"id":172,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425986598,"metadata":{"connectionId":0,"message":{"id":173,"result":{"result":[{"name":"keybinding","value":{"type":"object","className":"NativeResolvedKeybinding","description":"NativeResolvedKeybinding","objectId":"{\"injectedScriptId\":1,\"id\":1050}","preview":{"type":"object","description":"NativeResolvedKeybinding","overflow":false,"properties":[{"name":"_os","type":"number","value":"2"},{"name":"_parts","type":"object","value":"Array(1)","subtype":"array"},{"name":"_mapper","type":"object","value":"MacLinuxKeyboardMapper"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"target","value":{"type":"object","subtype":"node","className":"HTMLTextAreaElement","description":"textarea.inputarea","objectId":"{\"injectedScriptId\":1,\"id\":1051}","preview":{"type":"object","subtype":"node","description":"textarea.inputarea","overflow":true,"properties":[{"name":"autocomplete","type":"string","value":"off"},{"name":"autofocus","type":"boolean","value":"false"},{"name":"cols","type":"number","value":"20"},{"name":"dirName","type":"string","value":""},{"name":"disabled","type":"boolean","value":"false"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"shouldPreventDefault","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"firstPart","value":{"type":"string","value":"[Escape]"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"contextValue","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1052}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"62"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"currentChord","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"keypressLabel","value":{"type":"string","value":"Escape"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resolveResult","value":{"type":"undefined"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425986600,"metadata":{"connectionId":1,"message":{"seq":3531,"type":"response","request_seq":106,"command":"variables","success":true,"body":{"variables":[{"name":"contextValue","value":"Context {_id: 62, _parent: Context, _value: {…}}","evaluateName":"contextValue","type":"object","variablesReference":853},{"name":"currentChord","value":"null","evaluateName":"currentChord","type":"object","variablesReference":0},{"name":"firstPart","value":"'[Escape]'","evaluateName":"firstPart","type":"string","variablesReference":0},{"name":"keybinding","value":"NativeResolvedKeybinding {_os: 2, _parts: Array(1), _mapper: MacLinuxKeyboardMapper}","evaluateName":"keybinding","type":"object","variablesReference":851},{"name":"keypressLabel","value":"'Escape'","evaluateName":"keypressLabel","type":"string","variablesReference":0},{"name":"resolveResult","value":"undefined","evaluateName":"resolveResult","type":"undefined","variablesReference":0},{"name":"shouldPreventDefault","value":"false","evaluateName":"shouldPreventDefault","type":"boolean","variablesReference":0},{"name":"target","value":"textarea.inputarea","evaluateName":"target","type":"node","variablesReference":852},{"name":"this","value":"WorkbenchKeybindingService","evaluateName":"this","type":"object","variablesReference":854}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425987699,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":107}},"level":0} {"tag":"cdp.send","timestamp":1588425987700,"metadata":{"connectionId":0,"message":{"id":174,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425987701,"metadata":{"connectionId":0,"message":{"id":174,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425987703,"metadata":{"connectionId":1,"message":{"seq":3532,"type":"response","request_seq":107,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588425988372,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":27}},"level":0} {"tag":"dap.send","timestamp":1588425988372,"metadata":{"connectionId":0,"message":{"seq":96,"type":"response","request_seq":27,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425988372,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":108}},"level":0} {"tag":"cdp.send","timestamp":1588425988373,"metadata":{"connectionId":0,"message":{"id":175,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588425988373,"metadata":{"connectionId":0,"message":{"id":176,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:119:12:777"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425988373,"metadata":{"connectionId":1,"message":{"seq":3533,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":7,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588425988373,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":21}},"level":0} {"tag":"cdp.send","timestamp":1588425988373,"metadata":{"connectionId":0,"message":{"id":177,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588425988374,"metadata":{"connectionId":0,"message":{"id":175,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425988374,"metadata":{"connectionId":0,"message":{"id":176,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425988374,"metadata":{"connectionId":0,"message":{"id":177,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588425988376,"metadata":{"connectionId":3,"message":{"seq":103,"type":"response","request_seq":21,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588425988377,"metadata":{"connectionId":1,"message":{"seq":3534,"type":"response","request_seq":108,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588425988699,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":109}},"level":0} {"tag":"cdp.send","timestamp":1588425988699,"metadata":{"connectionId":0,"message":{"id":178,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425988700,"metadata":{"connectionId":0,"message":{"id":178,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425988701,"metadata":{"connectionId":1,"message":{"seq":3535,"type":"response","request_seq":109,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588425988713,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588425988715,"metadata":{"connectionId":1,"message":{"seq":3536,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588425989339,"metadata":{"connectionId":0,"message":{"seq":97,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425989340,"metadata":{"connectionId":1,"message":{"seq":3537,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.6,"max":0.3,"avg":0.3,"stddev":0,"count":2,"failed":0},"stackTrace.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":21.5,"max":16.2,"avg":7.2,"stddev":7.9,"count":3,"failed":0},"breakpointLocations.errors":[],"scopes":{"operation":"scopes","totalTime":0.7,"max":0.7,"avg":0.7,"stddev":null,"count":1,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":6.5,"max":6.5,"avg":6.5,"stddev":null,"count":1,"failed":0},"variables.errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":5.2,"max":5.2,"avg":5.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"continue":{"operation":"continue","totalTime":2.6,"max":2.6,"avg":2.6,"stddev":null,"count":1,"failed":0},"continue.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425993377,"metadata":{"connectionId":0,"message":{"seq":98,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588425993377,"metadata":{"connectionId":3,"message":{"seq":104,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":3.1,"max":3.1,"avg":3.1,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588425997822,"metadata":{"connectionId":0,"message":{"method":"Network.requestWillBeSent","params":{"requestId":"7822.238","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","documentURL":"file:///Users/roblou/code/vscode/out/vs/code/electron-browser/workbench/workbench.html?config=%7B%22_%22%3A%5B%5D%2C%22extensions-dir%22%3A%22..%2Fnotebook-extension-samples%22%2C%22inspect%22%3A%225875%22%2C%22appRoot%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%22%2C%22machineId%22%3A%22e9fce95266c953d717196bce4bd4c1c6e7b058fe0a40ec6728c6654f9fe8ceba%22%2C%22mainPid%22%3A7810%2C%22execPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fvscode%2F.build%2Felectron%2FCode%20-%20OSS.app%2FContents%2FMacOS%2FElectron%22%2C%22userEnv%22%3A%7B%22VSCODE_IPC_HOOK%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2F1.46.0-main.sock%22%2C%22VSCODE_NLS_CONFIG%22%3A%22%7B%5C%22locale%5C%22%3A%5C%22en%5C%22%2C%5C%22availableLanguages%5C%22%3A%7B%7D%2C%5C%22_languagePackSupport%5C%22%3Atrue%7D%22%2C%22VSCODE_LOGS%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Flogs%2F20200502T081139%22%7D%2C%22isInitialStartup%22%3Atrue%2C%22folderUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22external%22%3A%22file%3A%2F%2F%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22path%22%3A%22%2FUsers%2Froblou%2Fcode%2Fnotebook-test%22%2C%22scheme%22%3A%22file%22%7D%2C%22backupPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2FBackups%2F8e2f1798e5fc9c5c46f4c98ed28818b2%22%2C%22windowId%22%3A1%2C%22sessionId%22%3A%22window%3A1%22%2C%22logLevel%22%3A2%2C%22zoomLevel%22%3A0%2C%22perfEntries%22%3A%5B%22main%3Astarted%22%2C1588425099492%2C%22main%3AappReady%22%2C1588425099574%2C%22willLoadMainBundle%22%2C1588425099576%2C%22didLoadMainBundle%22%2C1588425099749%2C%22main%3AloadWindow%22%2C1588425099920%5D%2C%22partsSplashPath%22%3A%22%2FUsers%2Froblou%2FLibrary%2FApplication%20Support%2Fcode-oss-dev%2Frapid_render.json%22%7D","request":{"url":"data:image/png;base64,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","method":"GET","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) code-oss-dev/1.46.0 Chrome/78.0.3904.130 Electron/7.2.2 Safari/537.36"},"mixedContentType":"none","initialPriority":"Low","referrerPolicy":"no-referrer-when-downgrade"},"timestamp":548679.96768,"wallTime":1588425997.813921,"initiator":{"type":"script","stack":{"callFrames":[],"parent":{"description":"Image","callFrames":[{"functionName":"renderPNG","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":148,"columnNumber":26},{"functionName":"render","scriptId":"822","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.js","lineNumber":59,"columnNumber":23},{"functionName":"render","scriptId":"1103","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/output/outputRenderer.js","lineNumber":36,"columnNumber":33},{"functionName":"renderOutput","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":267,"columnNumber":73},{"functionName":"CodeCell","scriptId":"1433","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.js","lineNumber":189,"columnNumber":29},{"functionName":"_createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":87,"columnNumber":19},{"functionName":"createInstance","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":58,"columnNumber":30},{"functionName":"renderElement","scriptId":"1107","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js","lineNumber":670,"columnNumber":65},{"functionName":"renderElement","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":733,"columnNumber":25},{"functionName":"insertItemInDOM","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":472,"columnNumber":29},{"functionName":"render","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":428,"columnNumber":29},{"functionName":"onScroll","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":601,"columnNumber":25},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":459,"columnNumber":44},{"functionName":"","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":113,"columnNumber":31},{"functionName":"fire","scriptId":"438","url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","lineNumber":456,"columnNumber":41},{"functionName":"_setState","scriptId":"1505","url":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js","lineNumber":213,"columnNumber":27},{"functionName":"setScrollPositionNow","scriptId":"1505","url":"file:///Users/roblou/code/vscode/out/vs/base/common/scrollable.js","lineNumber":148,"columnNumber":17},{"functionName":"setScrollPosition","scriptId":"1280","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/scrollbar/scrollableElement.js","lineNumber":391,"columnNumber":29},{"functionName":"setScrollTop","scriptId":"1152","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listView.js","lineNumber":539,"columnNumber":39},{"functionName":"reveal","scriptId":"603","url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","lineNumber":1192,"columnNumber":34},{"functionName":"focusDown","scriptId":"243","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js","lineNumber":27,"columnNumber":21},{"functionName":"handler","scriptId":"243","url":"file:///Users/roblou/code/vscode/out/vs/workbench/browser/actions/listCommands.js","lineNumber":50,"columnNumber":37},{"functionName":"invokeFunction","scriptId":"1036","url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","lineNumber":42,"columnNumber":23},{"functionName":"_tryExecuteCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":74,"columnNumber":62},{"functionName":"","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":50}],"parent":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}}}},"type":"Image","frameId":"254836B4DC9A828F1D61559A5ED12885","hasUserGesture":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425997822,"metadata":{"connectionId":0,"message":{"method":"Network.requestServedFromCache","params":{"requestId":"7822.238"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425997822,"metadata":{"connectionId":0,"message":{"method":"Network.responseReceived","params":{"requestId":"7822.238","loaderId":"6C438FE1EF1F078B06C465DF4CDE688B","timestamp":548679.967746,"type":"Image","response":{"url":"data:image/png;base64,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","status":200,"statusText":"OK","headers":{"Content-Type":"image/png"},"mimeType":"image/png","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":0,"protocol":"data","securityState":"unknown"},"frameId":"254836B4DC9A828F1D61559A5ED12885"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425997822,"metadata":{"connectionId":0,"message":{"method":"Network.dataReceived","params":{"requestId":"7822.238","timestamp":548679.967748,"dataLength":7786,"encodedDataLength":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588425997823,"metadata":{"connectionId":0,"message":{"method":"Network.loadingFinished","params":{"requestId":"7822.238","timestamp":548679.967749,"encodedDataLength":0,"shouldReportCorbBlocking":false},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426002826,"metadata":{"connectionId":0,"message":{"seq":99,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Network.requestWillBeSent":{"operation":"Network.requestWillBeSent","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"Network.requestWillBeSent.errors":[],"Network.requestServedFromCache":{"operation":"Network.requestServedFromCache","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.requestServedFromCache.errors":[],"Network.responseReceived":{"operation":"Network.responseReceived","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Network.responseReceived.errors":[],"Network.dataReceived":{"operation":"Network.dataReceived","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.dataReceived.errors":[],"Network.loadingFinished":{"operation":"Network.loadingFinished","totalTime":0,"max":0,"avg":0,"stddev":null,"count":1,"failed":0},"Network.loadingFinished.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426011288,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":28}},"level":0} {"tag":"dap.send","timestamp":1588426011288,"metadata":{"connectionId":0,"message":{"seq":100,"type":"response","request_seq":28,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":8,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426011288,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":110}},"level":0} {"tag":"cdp.send","timestamp":1588426011288,"metadata":{"connectionId":0,"message":{"id":179,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426011289,"metadata":{"connectionId":0,"message":{"id":180,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"777","lineNumber":119,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426011289,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[178],"breakpoints":[{"line":178}],"sourceModified":false},"type":"request","seq":22}},"level":0} {"tag":"cdp.send","timestamp":1588426011289,"metadata":{"connectionId":0,"message":{"id":181,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","lineNumber":177,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426011293,"metadata":{"connectionId":0,"message":{"id":181,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426011296,"metadata":{"connectionId":3,"message":{"seq":105,"type":"response","request_seq":22,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":8,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426011310,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":111}},"level":0} {"tag":"cdp.send","timestamp":1588426011310,"metadata":{"connectionId":0,"message":{"id":182,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426011381,"metadata":{"connectionId":0,"message":{"id":179,"result":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426011458,"metadata":{"connectionId":0,"message":{"id":180,"result":{"breakpointId":"4:119:12:777","actualLocation":{"scriptId":"777","lineNumber":119,"columnNumber":34}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426011458,"metadata":{"connectionId":0,"message":{"id":182,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426011632,"metadata":{"connectionId":1,"message":{"seq":3538,"type":"response","request_seq":110,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":8,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178,"column":25}]}}},"level":0} {"tag":"dap.send","timestamp":1588426011633,"metadata":{"connectionId":1,"message":{"seq":3539,"type":"response","request_seq":111,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426011667,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":112}},"level":0} {"tag":"cdp.send","timestamp":1588426011667,"metadata":{"connectionId":0,"message":{"id":183,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426011668,"metadata":{"connectionId":0,"message":{"id":183,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426011670,"metadata":{"connectionId":1,"message":{"seq":3540,"type":"response","request_seq":112,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426013104,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"_doDispatch","functionLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"location":{"scriptId":"777","lineNumber":119,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1053}"},"name":"_doDispatch","startLocation":{"scriptId":"777","lineNumber":105,"columnNumber":19},"endLocation":{"scriptId":"777","lineNumber":145,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1054}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1055}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1056}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1057}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"_dispatch","functionLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"location":{"scriptId":"777","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1058}"},"name":"_dispatch","startLocation":{"scriptId":"777","lineNumber":102,"columnNumber":17},"endLocation":{"scriptId":"777","lineNumber":104,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1059}"},"startLocation":{"scriptId":"777","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"777","lineNumber":161,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1060}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1061}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1062}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"location":{"scriptId":"269","lineNumber":174,"columnNumber":52},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1063}"},"startLocation":{"scriptId":"269","lineNumber":172,"columnNumber":89},"endLocation":{"scriptId":"269","lineNumber":178,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1064}"},"name":"WorkbenchKeybindingService","startLocation":{"scriptId":"269","lineNumber":128,"columnNumber":23},"endLocation":{"scriptId":"269","lineNumber":225,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1065}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1066}"},"startLocation":{"scriptId":"269","lineNumber":13,"columnNumber":1607},"endLocation":{"scriptId":"269","lineNumber":676,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1067}"},"startLocation":{"scriptId":"269","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"269","lineNumber":678,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1068}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1069}"}}],"this":{"type":"object","className":"WorkbenchKeybindingService","description":"WorkbenchKeybindingService","objectId":"{\"injectedScriptId\":1,\"id\":1070}"}}],"reason":"other","hitBreakpoints":["4:119:12:777"]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426013105,"metadata":{"connectionId":1,"message":{"seq":3541,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426013107,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":113}},"level":0} {"tag":"dap.send","timestamp":1588426013107,"metadata":{"connectionId":1,"message":{"seq":3542,"type":"response","request_seq":113,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426013109,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":114}},"level":0} {"tag":"dap.send","timestamp":1588426013110,"metadata":{"connectionId":1,"message":{"seq":3543,"type":"response","request_seq":114,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":470,"name":"_doDispatch","line":178,"column":25,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588426013151,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"line":178},"type":"request","seq":115}},"level":0} {"tag":"cdp.send","timestamp":1588426013151,"metadata":{"connectionId":0,"message":{"id":184,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"777","lineNumber":119,"columnNumber":12},"end":{"scriptId":"777","lineNumber":119,"columnNumber":101}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426013155,"metadata":{"connectionId":0,"message":{"id":184,"result":{"locations":[{"scriptId":"777","lineNumber":119,"columnNumber":34},{"scriptId":"777","lineNumber":119,"columnNumber":39,"type":"call"},{"scriptId":"777","lineNumber":119,"columnNumber":54,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426013155,"metadata":{"connectionId":1,"message":{"seq":3544,"type":"response","request_seq":115,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":178,"column":25},{"line":178,"column":30},{"line":178,"column":45}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426013519,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":470},"type":"request","seq":116}},"level":0} {"tag":"dap.send","timestamp":1588426013519,"metadata":{"connectionId":1,"message":{"seq":3545,"type":"response","request_seq":116,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":855,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":856,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":857},{"name":"Global","expensive":true,"variablesReference":858}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426013531,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":855},"type":"request","seq":117}},"level":0} {"tag":"cdp.send","timestamp":1588426013531,"metadata":{"connectionId":0,"message":{"id":185,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1053}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426013531,"metadata":{"connectionId":0,"message":{"id":186,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1053}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426013532,"metadata":{"connectionId":0,"message":{"id":185,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426013534,"metadata":{"connectionId":0,"message":{"id":186,"result":{"result":[{"name":"keybinding","value":{"type":"object","className":"NativeResolvedKeybinding","description":"NativeResolvedKeybinding","objectId":"{\"injectedScriptId\":1,\"id\":1071}","preview":{"type":"object","description":"NativeResolvedKeybinding","overflow":false,"properties":[{"name":"_os","type":"number","value":"2"},{"name":"_parts","type":"object","value":"Array(1)","subtype":"array"},{"name":"_mapper","type":"object","value":"MacLinuxKeyboardMapper"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"target","value":{"type":"object","subtype":"node","className":"HTMLTextAreaElement","description":"textarea.inputarea","objectId":"{\"injectedScriptId\":1,\"id\":1072}","preview":{"type":"object","subtype":"node","description":"textarea.inputarea","overflow":true,"properties":[{"name":"autocomplete","type":"string","value":"off"},{"name":"autofocus","type":"boolean","value":"false"},{"name":"cols","type":"number","value":"20"},{"name":"dirName","type":"string","value":""},{"name":"disabled","type":"boolean","value":"false"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"shouldPreventDefault","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"firstPart","value":{"type":"string","value":"[ArrowDown]"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"contextValue","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1073}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"562"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"currentChord","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"keypressLabel","value":{"type":"string","value":"↓"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resolveResult","value":{"type":"undefined"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426013535,"metadata":{"connectionId":1,"message":{"seq":3546,"type":"response","request_seq":117,"command":"variables","success":true,"body":{"variables":[{"name":"contextValue","value":"Context {_id: 562, _parent: Context, _value: {…}}","evaluateName":"contextValue","type":"object","variablesReference":861},{"name":"currentChord","value":"null","evaluateName":"currentChord","type":"object","variablesReference":0},{"name":"firstPart","value":"'[ArrowDown]'","evaluateName":"firstPart","type":"string","variablesReference":0},{"name":"keybinding","value":"NativeResolvedKeybinding {_os: 2, _parts: Array(1), _mapper: MacLinuxKeyboardMapper}","evaluateName":"keybinding","type":"object","variablesReference":859},{"name":"keypressLabel","value":"'↓'","evaluateName":"keypressLabel","type":"string","variablesReference":0},{"name":"resolveResult","value":"undefined","evaluateName":"resolveResult","type":"undefined","variablesReference":0},{"name":"shouldPreventDefault","value":"false","evaluateName":"shouldPreventDefault","type":"boolean","variablesReference":0},{"name":"target","value":"textarea.inputarea","evaluateName":"target","type":"node","variablesReference":860},{"name":"this","value":"WorkbenchKeybindingService","evaluateName":"this","type":"object","variablesReference":862}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426013537,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":118}},"level":0} {"tag":"dap.send","timestamp":1588426013537,"metadata":{"connectionId":1,"message":{"seq":3547,"type":"response","request_seq":118,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":471,"name":"_dispatch","line":159,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"},{"id":472,"name":"<anonymous>","line":248,"column":36,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":3}}},"level":0} {"tag":"dap.receive","timestamp":1588426015518,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"contextValue","frameId":470,"context":"repl"},"type":"request","seq":119}},"level":0} {"tag":"cdp.send","timestamp":1588426015518,"metadata":{"connectionId":0,"message":{"id":187,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"contextValue","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426015520,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1632","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":12,"executionContextId":1,"hash":"3476cd018f03d45b72f3cc1d11ecacae580e6ea9","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":12,"stackTrace":{"callFrames":[{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":119,"columnNumber":34}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426015520,"metadata":{"connectionId":0,"message":{"id":187,"result":{"result":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1074}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"562"},{"name":"_parent","type":"object","value":"Context"},{"name":"_value","type":"object","value":"Object"}]}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588426015522,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588426015529,"metadata":{"connectionId":1,"message":{"seq":3548,"type":"response","request_seq":119,"command":"evaluate","success":true,"body":{"variablesReference":863,"result":"Context {_id: 562, _parent: Context, _value: {…}}"}}},"level":0} {"tag":"dap.receive","timestamp":1588426015536,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":470},"type":"request","seq":120}},"level":0} {"tag":"dap.send","timestamp":1588426015536,"metadata":{"connectionId":1,"message":{"seq":3549,"type":"response","request_seq":120,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: _doDispatch","presentationHint":"locals","expensive":false,"variablesReference":855,"line":162,"column":21,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"endLine":208,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":856,"line":5,"column":152,"source":{"name":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","path":"/Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","sourceReference":2054150569},"endLine":162,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":857},{"name":"Global","expensive":true,"variablesReference":858}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426015539,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":855},"type":"request","seq":121}},"level":0} {"tag":"dap.send","timestamp":1588426015539,"metadata":{"connectionId":1,"message":{"seq":3550,"type":"response","request_seq":121,"command":"variables","success":true,"body":{"variables":[{"name":"contextValue","value":"Context {_id: 562, _parent: Context, _value: {…}}","evaluateName":"contextValue","type":"object","variablesReference":861},{"name":"currentChord","value":"null","evaluateName":"currentChord","type":"object","variablesReference":0},{"name":"firstPart","value":"'[ArrowDown]'","evaluateName":"firstPart","type":"string","variablesReference":0},{"name":"keybinding","value":"NativeResolvedKeybinding {_os: 2, _parts: Array(1), _mapper: MacLinuxKeyboardMapper}","evaluateName":"keybinding","type":"object","variablesReference":859},{"name":"keypressLabel","value":"'↓'","evaluateName":"keypressLabel","type":"string","variablesReference":0},{"name":"resolveResult","value":"undefined","evaluateName":"resolveResult","type":"undefined","variablesReference":0},{"name":"shouldPreventDefault","value":"false","evaluateName":"shouldPreventDefault","type":"boolean","variablesReference":0},{"name":"target","value":"textarea.inputarea","evaluateName":"target","type":"node","variablesReference":860},{"name":"this","value":"WorkbenchKeybindingService","evaluateName":"this","type":"object","variablesReference":862}]}}},"level":0} {"tag":"dap.send","timestamp":1588426015656,"metadata":{"connectionId":1,"message":{"seq":3551,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756711","path":"<eval>/VM633756711","sourceReference":633756711}}}},"level":0} {"tag":"dap.send","timestamp":1588426016292,"metadata":{"connectionId":0,"message":{"seq":101,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426016296,"metadata":{"connectionId":3,"message":{"seq":106,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":6.9,"max":6.9,"avg":6.9,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426016635,"metadata":{"connectionId":1,"message":{"seq":3552,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":343.7,"max":343.7,"avg":343.7,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":330.7,"max":322.8,"avg":110.2,"stddev":184.1,"count":3,"failed":0},"breakpointLocations.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.4,"max":0.2,"avg":0.2,"stddev":0,"count":2,"failed":0},"stackTrace.errors":[],"scopes":{"operation":"scopes","totalTime":0.9,"max":0.4,"avg":0.4,"stddev":0,"count":2,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":5,"max":4.8,"avg":2.5,"stddev":3.2,"count":2,"failed":0},"variables.errors":[],"evaluate":{"operation":"evaluate","totalTime":12,"max":12,"avg":12,"stddev":null,"count":1,"failed":0},"evaluate.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426018109,"metadata":{"connectionId":0,"message":{"seq":102,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426019481,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":863},"type":"request","seq":122}},"level":0} {"tag":"cdp.send","timestamp":1588426019482,"metadata":{"connectionId":0,"message":{"id":188,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1074}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426019482,"metadata":{"connectionId":0,"message":{"id":189,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1074}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426019484,"metadata":{"connectionId":0,"message":{"id":188,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1075}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1076}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426019484,"metadata":{"connectionId":0,"message":{"id":189,"result":{"result":[{"name":"_id","value":{"type":"number","value":562,"description":"562"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"Context","description":"Context","objectId":"{\"injectedScriptId\":1,\"id\":1077}","preview":{"type":"object","description":"Context","overflow":false,"properties":[{"name":"_id","type":"number","value":"1"},{"name":"_parent","type":"object","value":"ConfigAwareContextValuesContainer"},{"name":"_value","type":"object","value":"Object"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1078}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"562"},{"name":"editorId","type":"string","value":"vs.editor.ICodeEditor:36"},{"name":"editorSimpleInput","type":"boolean","value":"false"},{"name":"editorFocus","type":"boolean","value":"true"},{"name":"textInputFocus","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1079}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426019487,"metadata":{"connectionId":1,"message":{"seq":3553,"type":"response","request_seq":122,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"562","evaluateName":"_id","type":"number","variablesReference":0},{"name":"_parent","value":"Context {_id: 1, _parent: ConfigAwareContextValuesContainer, _value: {…}}","evaluateName":"_parent","type":"object","variablesReference":865},{"name":"_value","value":"{_contextId: 562, editorId: 'vs.editor.ICodeEditor:36', editorSimpleInput: false, editorFocus: true, textInputFocus: true}","evaluateName":"_value","type":"object","variablesReference":866},{"name":"__proto__","value":"Object","evaluateName":"__proto__","type":"object","variablesReference":864}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426022790,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":865},"type":"request","seq":123}},"level":0} {"tag":"cdp.send","timestamp":1588426022790,"metadata":{"connectionId":0,"message":{"id":190,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1077}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426022791,"metadata":{"connectionId":0,"message":{"id":191,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1077}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426022797,"metadata":{"connectionId":0,"message":{"id":190,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1080}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1081}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426022797,"metadata":{"connectionId":0,"message":{"id":191,"result":{"result":[{"name":"_id","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_parent","value":{"type":"object","className":"ConfigAwareContextValuesContainer","description":"ConfigAwareContextValuesContainer","objectId":"{\"injectedScriptId\":1,\"id\":1082}","preview":{"type":"object","description":"ConfigAwareContextValuesContainer","overflow":true,"properties":[{"name":"_id","type":"number","value":"0"},{"name":"_parent","type":"object","value":"null","subtype":"null"},{"name":"_value","type":"object","value":"Object"},{"name":"_configurationService","type":"object","value":"WorkspaceService"},{"name":"_values","type":"object","value":"Map(19)","subtype":"map"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"_value","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1083}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"_contextId","type":"number","value":"1"},{"name":"groupActiveEditorDirty","type":"boolean","value":"true"},{"name":"groupEditorsCount","type":"number","value":"1"},{"name":"editorPinned","type":"boolean","value":"true"},{"name":"breadcrumbsPossible","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1084}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"constructor","type":"function","value":""},{"name":"setValue","type":"function","value":""},{"name":"removeValue","type":"function","value":""},{"name":"getValue","type":"function","value":""},{"name":"collectAllValues","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426022800,"metadata":{"connectionId":1,"message":{"seq":3554,"type":"response","request_seq":123,"command":"variables","success":true,"body":{"variables":[{"name":"_id","value":"1","evaluateName":"_parent._id","type":"number","variablesReference":0},{"name":"_parent","value":"ConfigAwareContextValuesContainer {_id: 0, _parent: null, _value: {…}, _configurationService: WorkspaceService, _values: Map(19)}","evaluateName":"_parent._parent","type":"object","variablesReference":868},{"name":"_value","value":"{_contextId: 1, groupActiveEditorDirty: true, groupEditorsCount: 1, editorPinned: true, breadcrumbsPossible: true}","evaluateName":"_parent._value","type":"object","variablesReference":869},{"name":"__proto__","value":"Object","evaluateName":"_parent.__proto__","type":"object","variablesReference":867}]}}},"level":0} {"tag":"dap.send","timestamp":1588426024487,"metadata":{"connectionId":1,"message":{"seq":3555,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"variables":{"operation":"variables","totalTime":16.2,"max":9.8,"avg":8.1,"stddev":2.5,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426024762,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":867},"type":"request","seq":124}},"level":0} {"tag":"cdp.send","timestamp":1588426024762,"metadata":{"connectionId":0,"message":{"id":192,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1084}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426024763,"metadata":{"connectionId":0,"message":{"id":193,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1084}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426024764,"metadata":{"connectionId":0,"message":{"id":192,"result":{"result":[{"name":"__proto__","get":{"type":"function","className":"Function","description":"function get __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1085}"},"set":{"type":"function","className":"Function","description":"function set __proto__() { [native code] }","objectId":"{\"injectedScriptId\":1,\"id\":1086}"},"configurable":true,"enumerable":false,"isOwn":false}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426024764,"metadata":{"connectionId":0,"message":{"id":193,"result":{"result":[{"name":"constructor","value":{"type":"function","className":"Function","description":"class Context {\n constructor(id, parent) {\n this._id = id;\n this._parent = parent;\n this._value = Object.create(null);\n this._value['_contextId'] = id;\n }\n setValue(key, value) {\n // console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\n if (this._value[key] !== value) {\n this._value[key] = value;\n return true;\n }\n return false;\n }\n removeValue(key) {\n // console.log('REMOVE ' + key + ' FROM ' + this._id);\n if (key in this._value) {\n delete this._value[key];\n return true;\n }\n return false;\n }\n getValue(key) {\n const ret = this._value[key];\n if (typeof ret === 'undefined' && this._parent) {\n return this._parent.getValue(key);\n }\n return ret;\n }\n collectAllValues() {\n let result = this._parent ? this._parent.collectAllValues() : Object.create(null);\n result = Object.assign(Object.assign({}, result), this._value);\n delete result['_contextId'];\n return result;\n }\n }","objectId":"{\"injectedScriptId\":1,\"id\":1087}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"setValue","value":{"type":"function","className":"Function","description":"setValue(key, value) {\n // console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\n if (this._value[key] !== value) {\n this._value[key] = value;\n return true;\n }\n return false;\n }","objectId":"{\"injectedScriptId\":1,\"id\":1088}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"removeValue","value":{"type":"function","className":"Function","description":"removeValue(key) {\n // console.log('REMOVE ' + key + ' FROM ' + this._id);\n if (key in this._value) {\n delete this._value[key];\n return true;\n }\n return false;\n }","objectId":"{\"injectedScriptId\":1,\"id\":1089}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"getValue","value":{"type":"function","className":"Function","description":"getValue(key) {\n const ret = this._value[key];\n if (typeof ret === 'undefined' && this._parent) {\n return this._parent.getValue(key);\n }\n return ret;\n }","objectId":"{\"injectedScriptId\":1,\"id\":1090}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"collectAllValues","value":{"type":"function","className":"Function","description":"collectAllValues() {\n let result = this._parent ? this._parent.collectAllValues() : Object.create(null);\n result = Object.assign(Object.assign({}, result), this._value);\n delete result['_contextId'];\n return result;\n }","objectId":"{\"injectedScriptId\":1,\"id\":1091}"},"writable":true,"configurable":true,"enumerable":false,"isOwn":true},{"name":"__proto__","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1092}","preview":{"type":"object","description":"Object","overflow":true,"properties":[{"name":"constructor","type":"function","value":""},{"name":"__defineGetter__","type":"function","value":""},{"name":"__defineSetter__","type":"function","value":""},{"name":"hasOwnProperty","type":"function","value":""},{"name":"__lookupGetter__","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":false,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426024775,"metadata":{"connectionId":1,"message":{"seq":3556,"type":"response","request_seq":124,"command":"variables","success":true,"body":{"variables":[{"name":"collectAllValues","value":"ƒ collectAllValues() {\\n let result = this._parent ? this._parent.collectAllValues() : Object.create(null);\\n result = Object.assign(Object.assign({}, result), this._value);\\n delete result['_contextId'];\\n return result;\\n }","evaluateName":"_parent.__proto__.collectAllValues","type":"function","variablesReference":875},{"name":"constructor","value":"class Context","evaluateName":"_parent.__proto__.constructor","type":"function","variablesReference":871},{"name":"getValue","value":"ƒ getValue(key) {\\n const ret = this._value[key];\\n if (typeof ret === 'undefined' && this._parent) {\\n return this._parent.getValue(key);\\n }\\n return ret;\\n }","evaluateName":"_parent.__proto__.getValue","type":"function","variablesReference":874},{"name":"removeValue","value":"ƒ removeValue(key) {\\n // console.log('REMOVE ' + key + ' FROM ' + this._id);\\n if (key in this._value) {\\n delete this._value[key];\\n return true;\\n }\\n return false;\\n }","evaluateName":"_parent.__proto__.removeValue","type":"function","variablesReference":873},{"name":"setValue","value":"ƒ setValue(key, value) {\\n // console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\\n if (this._value[key] !== value) {\\n this._value[key] = value;\\n return true;\\n }\\n return false;\\n }","evaluateName":"_parent.__proto__.setValue","type":"function","variablesReference":872},{"name":"__proto__","value":"Object","evaluateName":"_parent.__proto__.__proto__","type":"object","variablesReference":870}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426026057,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":869},"type":"request","seq":125}},"level":0} {"tag":"cdp.send","timestamp":1588426026058,"metadata":{"connectionId":0,"message":{"id":194,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1083}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426026058,"metadata":{"connectionId":0,"message":{"id":195,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1083}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426026059,"metadata":{"connectionId":0,"message":{"id":194,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426026059,"metadata":{"connectionId":0,"message":{"id":195,"result":{"result":[{"name":"_contextId","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"groupActiveEditorDirty","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"groupEditorsCount","value":{"type":"number","value":1,"description":"1"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"editorPinned","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsPossible","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsVisible","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"breadcrumbsActive","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resource","value":{"type":"object","className":"_URI","description":"_URI","objectId":"{\"injectedScriptId\":1,\"id\":1093}","preview":{"type":"object","description":"_URI","overflow":true,"properties":[{"name":"scheme","type":"string","value":"file"},{"name":"authority","type":"string","value":""},{"name":"path","type":"string","value":"/Users/roblou/code/notebook-test/samples/runCode_iframe_form_15.ipynb"},{"name":"query","type":"string","value":""},{"name":"fragment","type":"string","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceScheme","value":{"type":"string","value":"file"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceFilename","value":{"type":"string","value":"runCode_iframe_form_15.ipynb"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceLangId","value":{"type":"object","subtype":"null","value":null},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceExtname","value":{"type":"string","value":".ipynb"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"resourceSet","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"isFileSystemResource","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditorCursorAtBoundary","value":{"type":"string","value":"none"},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditorFocused","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookEditable","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookRunnable","value":{"type":"boolean","value":true},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookExecuting","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true},{"name":"notebookFindWidgetFocused","value":{"type":"boolean","value":false},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426026061,"metadata":{"connectionId":1,"message":{"seq":3557,"type":"response","request_seq":125,"command":"variables","success":true,"body":{"variables":[{"name":"_contextId","value":"1","evaluateName":"_parent._value._contextId","type":"number","variablesReference":0},{"name":"breadcrumbsActive","value":"false","evaluateName":"_parent._value.breadcrumbsActive","type":"boolean","variablesReference":0},{"name":"breadcrumbsPossible","value":"true","evaluateName":"_parent._value.breadcrumbsPossible","type":"boolean","variablesReference":0},{"name":"breadcrumbsVisible","value":"true","evaluateName":"_parent._value.breadcrumbsVisible","type":"boolean","variablesReference":0},{"name":"editorPinned","value":"true","evaluateName":"_parent._value.editorPinned","type":"boolean","variablesReference":0},{"name":"groupActiveEditorDirty","value":"true","evaluateName":"_parent._value.groupActiveEditorDirty","type":"boolean","variablesReference":0},{"name":"groupEditorsCount","value":"1","evaluateName":"_parent._value.groupEditorsCount","type":"number","variablesReference":0},{"name":"isFileSystemResource","value":"true","evaluateName":"_parent._value.isFileSystemResource","type":"boolean","variablesReference":0},{"name":"notebookEditable","value":"true","evaluateName":"_parent._value.notebookEditable","type":"boolean","variablesReference":0},{"name":"notebookEditorCursorAtBoundary","value":"'none'","evaluateName":"_parent._value.notebookEditorCursorAtBoundary","type":"string","variablesReference":0},{"name":"notebookEditorFocused","value":"true","evaluateName":"_parent._value.notebookEditorFocused","type":"boolean","variablesReference":0},{"name":"notebookExecuting","value":"false","evaluateName":"_parent._value.notebookExecuting","type":"boolean","variablesReference":0},{"name":"notebookFindWidgetFocused","value":"false","evaluateName":"_parent._value.notebookFindWidgetFocused","type":"boolean","variablesReference":0},{"name":"notebookRunnable","value":"true","evaluateName":"_parent._value.notebookRunnable","type":"boolean","variablesReference":0},{"name":"resource","value":"_URI {scheme: 'file', authority: '', path: '/Users/roblou/code/notebook-test/samples/runCode_iframe_form_15.ipynb', query: '', fragment: ''}","evaluateName":"_parent._value.resource","type":"object","variablesReference":876},{"name":"resourceExtname","value":"'.ipynb'","evaluateName":"_parent._value.resourceExtname","type":"string","variablesReference":0},{"name":"resourceFilename","value":"'runCode_iframe_form_15.ipynb'","evaluateName":"_parent._value.resourceFilename","type":"string","variablesReference":0},{"name":"resourceLangId","value":"null","evaluateName":"_parent._value.resourceLangId","type":"object","variablesReference":0},{"name":"resourceScheme","value":"'file'","evaluateName":"_parent._value.resourceScheme","type":"string","variablesReference":0},{"name":"resourceSet","value":"true","evaluateName":"_parent._value.resourceSet","type":"boolean","variablesReference":0}]}}},"level":0} {"tag":"dap.send","timestamp":1588426029780,"metadata":{"connectionId":1,"message":{"seq":3558,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"variables":{"operation":"variables","totalTime":16.6,"max":13.1,"avg":8.3,"stddev":6.7,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426041863,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":29}},"level":0} {"tag":"dap.send","timestamp":1588426041863,"metadata":{"connectionId":0,"message":{"seq":103,"type":"response","request_seq":29,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588426041863,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":126}},"level":0} {"tag":"cdp.send","timestamp":1588426041863,"metadata":{"connectionId":0,"message":{"id":196,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426041863,"metadata":{"connectionId":0,"message":{"id":197,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:119:12:777"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426041863,"metadata":{"connectionId":1,"message":{"seq":3559,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":8,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588426041863,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":23}},"level":0} {"tag":"cdp.send","timestamp":1588426041863,"metadata":{"connectionId":0,"message":{"id":198,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:177:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/platform\\/keybinding\\/common\\/abstractKeybindingService\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426041864,"metadata":{"connectionId":0,"message":{"id":198,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426041864,"metadata":{"connectionId":0,"message":{"id":196,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426041864,"metadata":{"connectionId":0,"message":{"id":197,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426041866,"metadata":{"connectionId":3,"message":{"seq":107,"type":"response","request_seq":23,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588426041868,"metadata":{"connectionId":1,"message":{"seq":3560,"type":"response","request_seq":126,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588426042372,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":127}},"level":0} {"tag":"cdp.send","timestamp":1588426042372,"metadata":{"connectionId":0,"message":{"id":199,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426042372,"metadata":{"connectionId":0,"message":{"id":199,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426042373,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426042373,"metadata":{"connectionId":1,"message":{"seq":3561,"type":"response","request_seq":127,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426042375,"metadata":{"connectionId":1,"message":{"seq":3562,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426046868,"metadata":{"connectionId":0,"message":{"seq":104,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426046868,"metadata":{"connectionId":3,"message":{"seq":108,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":3.1,"max":3.1,"avg":3.1,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426046868,"metadata":{"connectionId":1,"message":{"seq":3563,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":5.1,"max":5.1,"avg":5.1,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"continue":{"operation":"continue","totalTime":1.8,"max":1.8,"avg":1.8,"stddev":null,"count":1,"failed":0},"continue.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426046872,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[71],"breakpoints":[{"line":71}],"sourceModified":false},"type":"request","seq":30}},"level":0} {"tag":"dap.send","timestamp":1588426046872,"metadata":{"connectionId":0,"message":{"seq":105,"type":"response","request_seq":30,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":9,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426046872,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[71],"breakpoints":[{"line":71}],"sourceModified":false},"type":"request","seq":128}},"level":0} {"tag":"cdp.send","timestamp":1588426046873,"metadata":{"connectionId":0,"message":{"id":200,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426046880,"metadata":{"connectionId":0,"message":{"id":201,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1104","lineNumber":0,"columnNumber":0}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426046880,"metadata":{"connectionId":0,"message":{"id":202,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":70,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426046880,"metadata":{"connectionId":0,"message":{"id":203,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1104","lineNumber":41,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426046880,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[71],"breakpoints":[{"line":71}],"sourceModified":false},"type":"request","seq":24}},"level":0} {"tag":"cdp.send","timestamp":1588426046881,"metadata":{"connectionId":0,"message":{"id":204,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588426046881,"metadata":{"connectionId":0,"message":{"id":205,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":70,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426046890,"metadata":{"connectionId":0,"message":{"id":204,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426046890,"metadata":{"connectionId":0,"message":{"id":205,"result":{"breakpointId":"2:70:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426046893,"metadata":{"connectionId":3,"message":{"seq":109,"type":"response","request_seq":24,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":9,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426046898,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":71},"type":"request","seq":129}},"level":0} {"tag":"cdp.send","timestamp":1588426046898,"metadata":{"connectionId":0,"message":{"id":206,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":41,"columnNumber":16},"end":{"scriptId":"1104","lineNumber":42,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426046928,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":71},"type":"request","seq":130}},"level":0} {"tag":"cdp.send","timestamp":1588426046929,"metadata":{"connectionId":0,"message":{"id":207,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":41,"columnNumber":16},"end":{"scriptId":"1104","lineNumber":42,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426046977,"metadata":{"connectionId":0,"message":{"id":200,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426046977,"metadata":{"connectionId":0,"message":{"error":{"code":-32000,"message":"Could not resolve breakpoint"},"id":201,"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426047069,"metadata":{"connectionId":0,"message":{"id":202,"result":{"breakpointId":"2:70:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426047245,"metadata":{"connectionId":0,"message":{"id":203,"result":{"breakpointId":"4:41:16:1104","actualLocation":{"scriptId":"1104","lineNumber":41,"columnNumber":62}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426047245,"metadata":{"connectionId":0,"message":{"id":206,"result":{"locations":[{"scriptId":"1104","lineNumber":41,"columnNumber":62},{"scriptId":"1104","lineNumber":41,"columnNumber":111,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426047245,"metadata":{"connectionId":0,"message":{"id":207,"result":{"locations":[{"scriptId":"1104","lineNumber":41,"columnNumber":62},{"scriptId":"1104","lineNumber":41,"columnNumber":111,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426047245,"metadata":{"connectionId":1,"message":{"seq":3564,"type":"response","request_seq":128,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":9,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":71,"column":49}]}}},"level":0} {"tag":"dap.send","timestamp":1588426047246,"metadata":{"connectionId":1,"message":{"seq":3565,"type":"response","request_seq":129,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":71,"column":49},{"line":71,"column":81}]}}},"level":0} {"tag":"dap.send","timestamp":1588426047248,"metadata":{"connectionId":1,"message":{"seq":3566,"type":"response","request_seq":130,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":71,"column":49},{"line":71,"column":81}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426047308,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":71},"type":"request","seq":131}},"level":0} {"tag":"cdp.send","timestamp":1588426047309,"metadata":{"connectionId":0,"message":{"id":208,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":41,"columnNumber":16},"end":{"scriptId":"1104","lineNumber":42,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426047310,"metadata":{"connectionId":0,"message":{"id":208,"result":{"locations":[{"scriptId":"1104","lineNumber":41,"columnNumber":62},{"scriptId":"1104","lineNumber":41,"columnNumber":111,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426047311,"metadata":{"connectionId":1,"message":{"seq":3567,"type":"response","request_seq":131,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":71,"column":49},{"line":71,"column":81}]}}},"level":0} {"tag":"dap.send","timestamp":1588426047375,"metadata":{"connectionId":0,"message":{"seq":106,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426049762,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":31}},"level":0} {"tag":"dap.send","timestamp":1588426049762,"metadata":{"connectionId":0,"message":{"seq":107,"type":"response","request_seq":31,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.receive","timestamp":1588426049762,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":132}},"level":0} {"tag":"cdp.send","timestamp":1588426049762,"metadata":{"connectionId":0,"message":{"id":209,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:70:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426049762,"metadata":{"connectionId":0,"message":{"id":210,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:41:16:1104"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426049763,"metadata":{"connectionId":1,"message":{"seq":3568,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":9,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588426049763,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[],"breakpoints":[],"sourceModified":false},"type":"request","seq":25}},"level":0} {"tag":"cdp.send","timestamp":1588426049763,"metadata":{"connectionId":0,"message":{"id":211,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:70:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426049763,"metadata":{"connectionId":0,"message":{"id":209,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426049763,"metadata":{"connectionId":0,"message":{"id":210,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426049763,"metadata":{"connectionId":0,"message":{"id":211,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426049765,"metadata":{"connectionId":3,"message":{"seq":110,"type":"response","request_seq":25,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588426049767,"metadata":{"connectionId":1,"message":{"seq":3569,"type":"response","request_seq":132,"command":"setBreakpoints","success":true,"body":{"breakpoints":[]}}},"level":0} {"tag":"dap.send","timestamp":1588426051875,"metadata":{"connectionId":0,"message":{"seq":108,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.4,"max":0.2,"avg":0.2,"stddev":0,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426051893,"metadata":{"connectionId":3,"message":{"seq":111,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":15,"max":12.6,"avg":7.5,"stddev":7.2,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426052247,"metadata":{"connectionId":1,"message":{"seq":3570,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":377.9,"max":373.4,"avg":189,"stddev":260.8,"count":2,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":671.5,"max":349,"avg":223.8,"stddev":192,"count":3,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426053343,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78],"breakpoints":[{"line":78}],"sourceModified":false},"type":"request","seq":32}},"level":0} {"tag":"dap.send","timestamp":1588426053343,"metadata":{"connectionId":0,"message":{"seq":109,"type":"response","request_seq":32,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426053343,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[78],"breakpoints":[{"line":78}],"sourceModified":false},"type":"request","seq":133}},"level":0} {"tag":"cdp.send","timestamp":1588426053343,"metadata":{"connectionId":0,"message":{"id":212,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":77,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426053344,"metadata":{"connectionId":0,"message":{"id":213,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1104","lineNumber":46,"columnNumber":20}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426053344,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78],"breakpoints":[{"line":78}],"sourceModified":false},"type":"request","seq":26}},"level":0} {"tag":"cdp.send","timestamp":1588426053344,"metadata":{"connectionId":0,"message":{"id":214,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":77,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426053348,"metadata":{"connectionId":0,"message":{"id":214,"result":{"breakpointId":"2:77:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426053350,"metadata":{"connectionId":3,"message":{"seq":112,"type":"response","request_seq":26,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426053374,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":134}},"level":0} {"tag":"cdp.send","timestamp":1588426053375,"metadata":{"connectionId":0,"message":{"id":215,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426053446,"metadata":{"connectionId":0,"message":{"id":212,"result":{"breakpointId":"2:77:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426053536,"metadata":{"connectionId":0,"message":{"id":213,"result":{"breakpointId":"4:46:20:1104","actualLocation":{"scriptId":"1104","lineNumber":46,"columnNumber":36}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426053628,"metadata":{"connectionId":0,"message":{"id":215,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426054179,"metadata":{"connectionId":1,"message":{"seq":3571,"type":"response","request_seq":133,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426054180,"metadata":{"connectionId":1,"message":{"seq":3572,"type":"response","request_seq":134,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426054213,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":135}},"level":0} {"tag":"cdp.send","timestamp":1588426054214,"metadata":{"connectionId":0,"message":{"id":216,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426054215,"metadata":{"connectionId":0,"message":{"id":216,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426054216,"metadata":{"connectionId":1,"message":{"seq":3573,"type":"response","request_seq":135,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426058348,"metadata":{"connectionId":0,"message":{"seq":110,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426058350,"metadata":{"connectionId":3,"message":{"seq":113,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":6.3,"max":6.3,"avg":6.3,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426059183,"metadata":{"connectionId":1,"message":{"seq":3574,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":835.8,"max":835.8,"avg":835.8,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":808.3,"max":805.6,"avg":404.1,"stddev":567.7,"count":2,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426083479,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78,104],"breakpoints":[{"line":78},{"line":104}],"sourceModified":false},"type":"request","seq":33}},"level":0} {"tag":"dap.send","timestamp":1588426083479,"metadata":{"connectionId":0,"message":{"seq":111,"type":"response","request_seq":33,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":11,"verified":false,"message":"Unbound breakpoint"},{"id":12,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426083479,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[78,104],"breakpoints":[{"line":78},{"line":104}],"sourceModified":false},"type":"request","seq":136}},"level":0} {"tag":"cdp.send","timestamp":1588426083480,"metadata":{"connectionId":0,"message":{"id":217,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":103,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426083480,"metadata":{"connectionId":0,"message":{"id":218,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1104","lineNumber":70,"columnNumber":28}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426083480,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78,104],"breakpoints":[{"line":78},{"line":104}],"sourceModified":false},"type":"request","seq":27}},"level":0} {"tag":"cdp.send","timestamp":1588426083480,"metadata":{"connectionId":0,"message":{"id":219,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":103,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426083483,"metadata":{"connectionId":0,"message":{"id":219,"result":{"breakpointId":"2:103:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426083484,"metadata":{"connectionId":3,"message":{"seq":114,"type":"response","request_seq":27,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":false,"message":"Unbound breakpoint"},{"id":12,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426083500,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":137}},"level":0} {"tag":"cdp.send","timestamp":1588426083501,"metadata":{"connectionId":0,"message":{"id":220,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426083501,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":138}},"level":0} {"tag":"cdp.send","timestamp":1588426083501,"metadata":{"connectionId":0,"message":{"id":221,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426083576,"metadata":{"connectionId":0,"message":{"id":217,"result":{"breakpointId":"2:103:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426083666,"metadata":{"connectionId":0,"message":{"id":218,"result":{"breakpointId":"4:70:28:1104","actualLocation":{"scriptId":"1104","lineNumber":70,"columnNumber":34}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426083667,"metadata":{"connectionId":0,"message":{"id":220,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426083742,"metadata":{"connectionId":0,"message":{"id":221,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426084009,"metadata":{"connectionId":1,"message":{"seq":3575,"type":"response","request_seq":136,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78,"column":20},{"id":12,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426084010,"metadata":{"connectionId":1,"message":{"seq":3576,"type":"response","request_seq":137,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426084011,"metadata":{"connectionId":1,"message":{"seq":3577,"type":"response","request_seq":138,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426084046,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":139}},"level":0} {"tag":"cdp.send","timestamp":1588426084046,"metadata":{"connectionId":0,"message":{"id":222,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426084046,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":140}},"level":0} {"tag":"cdp.send","timestamp":1588426084046,"metadata":{"connectionId":0,"message":{"id":223,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426084047,"metadata":{"connectionId":0,"message":{"id":222,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426084047,"metadata":{"connectionId":0,"message":{"id":223,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426084048,"metadata":{"connectionId":1,"message":{"seq":3578,"type":"response","request_seq":139,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426084049,"metadata":{"connectionId":1,"message":{"seq":3579,"type":"response","request_seq":140,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426088483,"metadata":{"connectionId":0,"message":{"seq":112,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426088484,"metadata":{"connectionId":3,"message":{"seq":115,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":4.4,"max":4.4,"avg":4.4,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426089013,"metadata":{"connectionId":1,"message":{"seq":3580,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":530,"max":530,"avg":530,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":1027.5,"max":511.1,"avg":256.9,"stddev":292.9,"count":4,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426099083,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78],"breakpoints":[{"line":78}],"sourceModified":false},"type":"request","seq":34}},"level":0} {"tag":"dap.send","timestamp":1588426099084,"metadata":{"connectionId":0,"message":{"seq":113,"type":"response","request_seq":34,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":13,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426099084,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[78],"breakpoints":[{"line":78}],"sourceModified":false},"type":"request","seq":141}},"level":0} {"tag":"cdp.send","timestamp":1588426099084,"metadata":{"connectionId":0,"message":{"id":224,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:103:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426099084,"metadata":{"connectionId":0,"message":{"id":225,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"4:70:28:1104"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426099084,"metadata":{"connectionId":1,"message":{"seq":3581,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":12,"verified":false,"message":"Unbound breakpoint"}}}},"level":0} {"tag":"dap.receive","timestamp":1588426099085,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78],"breakpoints":[{"line":78}],"sourceModified":false},"type":"request","seq":28}},"level":0} {"tag":"cdp.send","timestamp":1588426099085,"metadata":{"connectionId":0,"message":{"id":226,"method":"Debugger.removeBreakpoint","params":{"breakpointId":"2:103:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts"},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426099086,"metadata":{"connectionId":0,"message":{"id":224,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426099086,"metadata":{"connectionId":0,"message":{"id":225,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426099087,"metadata":{"connectionId":0,"message":{"id":226,"result":{},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426099088,"metadata":{"connectionId":1,"message":{"seq":3582,"type":"response","request_seq":141,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426099088,"metadata":{"connectionId":3,"message":{"seq":116,"type":"response","request_seq":28,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426099115,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":142}},"level":0} {"tag":"cdp.send","timestamp":1588426099116,"metadata":{"connectionId":0,"message":{"id":227,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426099117,"metadata":{"connectionId":0,"message":{"id":227,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426099118,"metadata":{"connectionId":1,"message":{"seq":3583,"type":"response","request_seq":142,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426104085,"metadata":{"connectionId":0,"message":{"seq":114,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":1.2,"max":1.2,"avg":1.2,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426104089,"metadata":{"connectionId":1,"message":{"seq":3584,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":4.6,"max":4.6,"avg":4.6,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":2.9,"max":2.9,"avg":2.9,"stddev":null,"count":1,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426104089,"metadata":{"connectionId":3,"message":{"seq":117,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":4,"max":4,"avg":4,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426142181,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts"},"lines":[142],"breakpoints":[{"line":142}],"sourceModified":false},"type":"request","seq":35}},"level":0} {"tag":"dap.send","timestamp":1588426142181,"metadata":{"connectionId":0,"message":{"seq":115,"type":"response","request_seq":35,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":14,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426142181,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"lines":[142],"breakpoints":[{"line":142}],"sourceModified":false},"type":"request","seq":143}},"level":0} {"tag":"cdp.send","timestamp":1588426142182,"metadata":{"connectionId":0,"message":{"id":228,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426142183,"metadata":{"connectionId":0,"message":{"id":229,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1535","lineNumber":0,"columnNumber":0}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426142183,"metadata":{"connectionId":0,"message":{"id":230,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","lineNumber":141,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426142184,"metadata":{"connectionId":0,"message":{"id":231,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1535","lineNumber":103,"columnNumber":12}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426142184,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts"},"lines":[142],"breakpoints":[{"line":142}],"sourceModified":false},"type":"request","seq":29}},"level":0} {"tag":"cdp.send","timestamp":1588426142184,"metadata":{"connectionId":0,"message":{"id":232,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","lineNumber":0,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.send","timestamp":1588426142184,"metadata":{"connectionId":0,"message":{"id":233,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","lineNumber":141,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142187,"metadata":{"connectionId":0,"message":{"id":232,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142189,"metadata":{"connectionId":0,"message":{"id":233,"result":{"breakpointId":"2:141:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.receive","timestamp":1588426142210,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":144}},"level":0} {"tag":"cdp.send","timestamp":1588426142210,"metadata":{"connectionId":0,"message":{"id":234,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142275,"metadata":{"connectionId":0,"message":{"id":228,"result":{"breakpointId":"2:0:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142275,"metadata":{"connectionId":0,"message":{"error":{"code":-32000,"message":"Could not resolve breakpoint"},"id":229,"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142380,"metadata":{"connectionId":0,"message":{"id":230,"result":{"breakpointId":"2:141:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/viewModel\\/baseCellViewModel\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426142454,"metadata":{"connectionId":3,"message":{"seq":118,"type":"response","request_seq":29,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":14,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426142495,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":145}},"level":0} {"tag":"cdp.send","timestamp":1588426142496,"metadata":{"connectionId":0,"message":{"id":235,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142523,"metadata":{"connectionId":0,"message":{"id":231,"result":{"breakpointId":"4:103:12:1535","actualLocation":{"scriptId":"1535","lineNumber":103,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142524,"metadata":{"connectionId":0,"message":{"id":234,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426142524,"metadata":{"connectionId":1,"message":{"seq":3585,"type":"response","request_seq":143,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":14,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142,"column":15}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426142524,"metadata":{"connectionId":0,"message":{"id":235,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426142525,"metadata":{"connectionId":1,"message":{"seq":3586,"type":"response","request_seq":144,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426142527,"metadata":{"connectionId":1,"message":{"seq":3587,"type":"response","request_seq":145,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426142569,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":146}},"level":0} {"tag":"cdp.send","timestamp":1588426142569,"metadata":{"connectionId":0,"message":{"id":236,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426142570,"metadata":{"connectionId":0,"message":{"id":236,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426142571,"metadata":{"connectionId":1,"message":{"seq":3588,"type":"response","request_seq":146,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426147183,"metadata":{"connectionId":0,"message":{"seq":116,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.5,"max":0.5,"avg":0.5,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426147456,"metadata":{"connectionId":3,"message":{"seq":119,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":270.1,"max":270.1,"avg":270.1,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426147525,"metadata":{"connectionId":1,"message":{"seq":3589,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":342.7,"max":342.7,"avg":342.7,"stddev":null,"count":1,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":349.5,"max":315.2,"avg":116.5,"stddev":172.7,"count":3,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426149376,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":147}},"level":0} {"tag":"cdp.send","timestamp":1588426149378,"metadata":{"connectionId":0,"message":{"id":237,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426149384,"metadata":{"connectionId":0,"message":{"id":237,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426149386,"metadata":{"connectionId":1,"message":{"seq":3590,"type":"response","request_seq":147,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426153668,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78,104],"breakpoints":[{"line":78},{"line":104}],"sourceModified":false},"type":"request","seq":36}},"level":0} {"tag":"dap.send","timestamp":1588426153668,"metadata":{"connectionId":0,"message":{"seq":117,"type":"response","request_seq":36,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":15,"verified":false,"message":"Unbound breakpoint"},{"id":16,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426153668,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[78,104],"breakpoints":[{"line":78},{"line":104}],"sourceModified":false},"type":"request","seq":148}},"level":0} {"tag":"cdp.send","timestamp":1588426153669,"metadata":{"connectionId":0,"message":{"id":238,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":103,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426153669,"metadata":{"connectionId":0,"message":{"id":239,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1104","lineNumber":70,"columnNumber":28}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426153669,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78,104],"breakpoints":[{"line":78},{"line":104}],"sourceModified":false},"type":"request","seq":30}},"level":0} {"tag":"cdp.send","timestamp":1588426153669,"metadata":{"connectionId":0,"message":{"id":240,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":103,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426153673,"metadata":{"connectionId":0,"message":{"id":240,"result":{"breakpointId":"2:103:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.send","timestamp":1588426153674,"metadata":{"connectionId":3,"message":{"seq":120,"type":"response","request_seq":30,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":false,"message":"Unbound breakpoint"},{"id":16,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426153701,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":149}},"level":0} {"tag":"cdp.send","timestamp":1588426153701,"metadata":{"connectionId":0,"message":{"id":241,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426153701,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":150}},"level":0} {"tag":"cdp.send","timestamp":1588426153701,"metadata":{"connectionId":0,"message":{"id":242,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426153756,"metadata":{"connectionId":0,"message":{"id":238,"result":{"breakpointId":"2:103:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426153827,"metadata":{"connectionId":0,"message":{"id":239,"result":{"breakpointId":"4:70:28:1104","actualLocation":{"scriptId":"1104","lineNumber":70,"columnNumber":34}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426153827,"metadata":{"connectionId":0,"message":{"id":241,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426153827,"metadata":{"connectionId":0,"message":{"id":242,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426154390,"metadata":{"connectionId":1,"message":{"seq":3591,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":9.5,"max":9.5,"avg":9.5,"stddev":null,"count":1,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426154391,"metadata":{"connectionId":1,"message":{"seq":3592,"type":"response","request_seq":148,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78,"column":20},{"id":16,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426154393,"metadata":{"connectionId":1,"message":{"seq":3593,"type":"response","request_seq":149,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426154395,"metadata":{"connectionId":1,"message":{"seq":3594,"type":"response","request_seq":150,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426154432,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":151}},"level":0} {"tag":"cdp.send","timestamp":1588426154432,"metadata":{"connectionId":0,"message":{"id":243,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426154433,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":152}},"level":0} {"tag":"cdp.send","timestamp":1588426154433,"metadata":{"connectionId":0,"message":{"id":244,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426154434,"metadata":{"connectionId":0,"message":{"id":243,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426154434,"metadata":{"connectionId":0,"message":{"id":244,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426154434,"metadata":{"connectionId":1,"message":{"seq":3595,"type":"response","request_seq":151,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426154436,"metadata":{"connectionId":1,"message":{"seq":3596,"type":"response","request_seq":152,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426155162,"metadata":{"connectionId":0,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78,104,110],"breakpoints":[{"line":78},{"line":104},{"line":110}],"sourceModified":false},"type":"request","seq":37}},"level":0} {"tag":"dap.send","timestamp":1588426155162,"metadata":{"connectionId":0,"message":{"seq":118,"type":"response","request_seq":37,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":17,"verified":false,"message":"Unbound breakpoint"},{"id":18,"verified":false,"message":"Unbound breakpoint"},{"id":19,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426155162,"metadata":{"connectionId":1,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"lines":[78,104,110],"breakpoints":[{"line":78},{"line":104},{"line":110}],"sourceModified":false},"type":"request","seq":153}},"level":0} {"tag":"cdp.send","timestamp":1588426155162,"metadata":{"connectionId":0,"message":{"id":245,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":109,"columnNumber":0},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426155162,"metadata":{"connectionId":0,"message":{"id":246,"method":"Debugger.setBreakpoint","params":{"location":{"scriptId":"1104","lineNumber":75,"columnNumber":28}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426155162,"metadata":{"connectionId":3,"message":{"command":"setBreakpoints","arguments":{"source":{"name":"notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts"},"lines":[78,104,110],"breakpoints":[{"line":78},{"line":104},{"line":110}],"sourceModified":false},"type":"request","seq":31}},"level":0} {"tag":"cdp.send","timestamp":1588426155162,"metadata":{"connectionId":0,"message":{"id":247,"method":"Debugger.setBreakpointByUrl","params":{"urlRegex":"file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","lineNumber":109,"columnNumber":0},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155168,"metadata":{"connectionId":0,"message":{"id":247,"result":{"breakpointId":"2:109:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"F3779EF2C7D50E03030231095B49FE9C"}},"level":0} {"tag":"dap.receive","timestamp":1588426155189,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":154}},"level":0} {"tag":"cdp.send","timestamp":1588426155189,"metadata":{"connectionId":0,"message":{"id":248,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426155189,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":155}},"level":0} {"tag":"cdp.send","timestamp":1588426155189,"metadata":{"connectionId":0,"message":{"id":249,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426155189,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":156}},"level":0} {"tag":"cdp.send","timestamp":1588426155189,"metadata":{"connectionId":0,"message":{"id":250,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155253,"metadata":{"connectionId":0,"message":{"id":245,"result":{"breakpointId":"2:109:0:file:\\/\\/\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts|\\/Users\\/roblou\\/code\\/vscode\\/src\\/vs\\/workbench\\/contrib\\/notebook\\/browser\\/view\\/notebookCellList\\.ts","locations":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155371,"metadata":{"connectionId":0,"message":{"id":246,"result":{"breakpointId":"4:75:28:1104","actualLocation":{"scriptId":"1104","lineNumber":75,"columnNumber":28}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155372,"metadata":{"connectionId":0,"message":{"id":248,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155372,"metadata":{"connectionId":0,"message":{"id":249,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155372,"metadata":{"connectionId":0,"message":{"id":250,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426155524,"metadata":{"connectionId":3,"message":{"seq":121,"type":"response","request_seq":31,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":false,"message":"Unbound breakpoint"},{"id":16,"verified":false,"message":"Unbound breakpoint"},{"id":19,"verified":false,"message":"Unbound breakpoint"}]}}},"level":0} {"tag":"dap.send","timestamp":1588426155526,"metadata":{"connectionId":1,"message":{"seq":3597,"type":"response","request_seq":153,"command":"setBreakpoints","success":true,"body":{"breakpoints":[{"id":10,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78,"column":20},{"id":16,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104,"column":12},{"id":19,"verified":true,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110,"column":6}]}}},"level":0} {"tag":"dap.send","timestamp":1588426155528,"metadata":{"connectionId":1,"message":{"seq":3598,"type":"response","request_seq":154,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426155529,"metadata":{"connectionId":1,"message":{"seq":3599,"type":"response","request_seq":155,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426155529,"metadata":{"connectionId":1,"message":{"seq":3600,"type":"response","request_seq":156,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426155564,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":157}},"level":0} {"tag":"cdp.send","timestamp":1588426155564,"metadata":{"connectionId":0,"message":{"id":251,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426155564,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":158}},"level":0} {"tag":"cdp.send","timestamp":1588426155564,"metadata":{"connectionId":0,"message":{"id":252,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426155565,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":159}},"level":0} {"tag":"cdp.send","timestamp":1588426155565,"metadata":{"connectionId":0,"message":{"id":253,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155565,"metadata":{"connectionId":0,"message":{"id":251,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426155565,"metadata":{"connectionId":1,"message":{"seq":3601,"type":"response","request_seq":157,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426155565,"metadata":{"connectionId":0,"message":{"id":252,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426155565,"metadata":{"connectionId":0,"message":{"id":253,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426155567,"metadata":{"connectionId":1,"message":{"seq":3602,"type":"response","request_seq":158,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426155569,"metadata":{"connectionId":1,"message":{"seq":3603,"type":"response","request_seq":159,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.send","timestamp":1588426158672,"metadata":{"connectionId":0,"message":{"seq":119,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":0.5,"max":0.3,"avg":0.2,"stddev":0.1,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426158676,"metadata":{"connectionId":3,"message":{"seq":122,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":367.7,"max":362.3,"avg":183.9,"stddev":252.3,"count":2,"failed":0},"setBreakpoints.errors":[]}}}},"level":0} {"tag":"cdp.receive","timestamp":1588426159010,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"recomputeContext","functionLocation":{"scriptId":"1104","lineNumber":45,"columnNumber":41},"location":{"scriptId":"1104","lineNumber":46,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1094}"},"name":"recomputeContext","startLocation":{"scriptId":"1104","lineNumber":45,"columnNumber":41},"endLocation":{"scriptId":"1104","lineNumber":61,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1095}"},"name":"NotebookCellList","startLocation":{"scriptId":"1104","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1104","lineNumber":85,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1096}"},"startLocation":{"scriptId":"1104","lineNumber":13,"columnNumber":578},"endLocation":{"scriptId":"1104","lineNumber":697,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1097}"},"startLocation":{"scriptId":"1104","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1104","lineNumber":699,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1098}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1099}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1104","lineNumber":63,"columnNumber":73},"location":{"scriptId":"1104","lineNumber":79,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1100}"},"startLocation":{"scriptId":"1104","lineNumber":64,"columnNumber":43},"endLocation":{"scriptId":"1104","lineNumber":81,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1101}"},"startLocation":{"scriptId":"1104","lineNumber":63,"columnNumber":73},"endLocation":{"scriptId":"1104","lineNumber":84,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1102}"},"name":"NotebookCellList","startLocation":{"scriptId":"1104","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1104","lineNumber":85,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1103}"},"startLocation":{"scriptId":"1104","lineNumber":13,"columnNumber":578},"endLocation":{"scriptId":"1104","lineNumber":697,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1104}"},"startLocation":{"scriptId":"1104","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1104","lineNumber":699,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1105}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1106}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1107}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1108}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1109}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1110}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1111}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1112}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1113}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"438","lineNumber":43,"columnNumber":78},"location":{"scriptId":"438","lineNumber":43,"columnNumber":92},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1114}"},"startLocation":{"scriptId":"438","lineNumber":43,"columnNumber":78},"endLocation":{"scriptId":"438","lineNumber":43,"columnNumber":114}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1115}"},"startLocation":{"scriptId":"438","lineNumber":43,"columnNumber":28},"endLocation":{"scriptId":"438","lineNumber":43,"columnNumber":134}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1116}"},"name":"map","startLocation":{"scriptId":"438","lineNumber":42,"columnNumber":20},"endLocation":{"scriptId":"438","lineNumber":44,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1117}"},"startLocation":{"scriptId":"438","lineNumber":9,"columnNumber":14},"endLocation":{"scriptId":"438","lineNumber":292,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1118}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1119}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1120}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"438","lineNumber":643,"columnNumber":29},"location":{"scriptId":"438","lineNumber":649,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1121}"},"startLocation":{"scriptId":"438","lineNumber":643,"columnNumber":29},"endLocation":{"scriptId":"438","lineNumber":651,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1122}"},"startLocation":{"scriptId":"438","lineNumber":642,"columnNumber":19},"endLocation":{"scriptId":"438","lineNumber":652,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1123}"},"name":"wrapEvent","startLocation":{"scriptId":"438","lineNumber":641,"columnNumber":17},"endLocation":{"scriptId":"438","lineNumber":653,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1124}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1125}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1126}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1127}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1128}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1129}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1130}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1131}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1132}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1133}"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"_set","functionLocation":{"scriptId":"603","lineNumber":107,"columnNumber":16},"location":{"scriptId":"603","lineNumber":114,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1134}"},"name":"_set","startLocation":{"scriptId":"603","lineNumber":107,"columnNumber":16},"endLocation":{"scriptId":"603","lineNumber":116,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1135}"},"startLocation":{"scriptId":"603","lineNumber":10,"columnNumber":490},"endLocation":{"scriptId":"603","lineNumber":1287,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1136}"},"startLocation":{"scriptId":"603","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"603","lineNumber":1289,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1137}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1138}"}}],"this":{"type":"object","className":"SelectionTrait","description":"SelectionTrait","objectId":"{\"injectedScriptId\":1,\"id\":1139}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"set","functionLocation":{"scriptId":"603","lineNumber":104,"columnNumber":15},"location":{"scriptId":"603","lineNumber":105,"columnNumber":28},"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1140}"},"name":"set","startLocation":{"scriptId":"603","lineNumber":104,"columnNumber":15},"endLocation":{"scriptId":"603","lineNumber":106,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1141}"},"startLocation":{"scriptId":"603","lineNumber":10,"columnNumber":490},"endLocation":{"scriptId":"603","lineNumber":1287,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1142}"},"startLocation":{"scriptId":"603","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"603","lineNumber":1289,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1143}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1144}"}}],"this":{"type":"object","className":"SelectionTrait","description":"SelectionTrait","objectId":"{\"injectedScriptId\":1,\"id\":1145}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"setSelection","functionLocation":{"scriptId":"603","lineNumber":1023,"columnNumber":24},"location":{"scriptId":"603","lineNumber":1029,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/base/browser/ui/list/listWidget.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1146}"},"name":"setSelection","startLocation":{"scriptId":"603","lineNumber":1023,"columnNumber":24},"endLocation":{"scriptId":"603","lineNumber":1030,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1147}"},"startLocation":{"scriptId":"603","lineNumber":10,"columnNumber":490},"endLocation":{"scriptId":"603","lineNumber":1287,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1148}"},"startLocation":{"scriptId":"603","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"603","lineNumber":1289,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1149}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1150}"}}],"this":{"type":"object","className":"NotebookCellList","description":"NotebookCellList","objectId":"{\"injectedScriptId\":1,\"id\":1151}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"selectElement","functionLocation":{"scriptId":"1104","lineNumber":280,"columnNumber":25},"location":{"scriptId":"1104","lineNumber":286,"columnNumber":25},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1152}"},"name":"selectElement","startLocation":{"scriptId":"1104","lineNumber":280,"columnNumber":25},"endLocation":{"scriptId":"1104","lineNumber":289,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1153}"},"startLocation":{"scriptId":"1104","lineNumber":13,"columnNumber":578},"endLocation":{"scriptId":"1104","lineNumber":697,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1154}"},"startLocation":{"scriptId":"1104","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1104","lineNumber":699,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1155}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1156}"}}],"this":{"type":"object","className":"NotebookCellList","description":"NotebookCellList","objectId":"{\"injectedScriptId\":1,\"id\":1157}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"selectElement","functionLocation":{"scriptId":"542","lineNumber":538,"columnNumber":25},"location":{"scriptId":"542","lineNumber":540,"columnNumber":73},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1158}"},"name":"selectElement","startLocation":{"scriptId":"542","lineNumber":538,"columnNumber":25},"endLocation":{"scriptId":"542","lineNumber":542,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1159}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1160}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1161}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1162}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1163}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1164}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"focusNotebookCell","functionLocation":{"scriptId":"542","lineNumber":776,"columnNumber":29},"location":{"scriptId":"542","lineNumber":792,"columnNumber":25},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1165}"},"name":"focusNotebookCell","startLocation":{"scriptId":"542","lineNumber":785,"columnNumber":21},"endLocation":{"scriptId":"542","lineNumber":795,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1166}"},"name":"focusNotebookCell","startLocation":{"scriptId":"542","lineNumber":776,"columnNumber":29},"endLocation":{"scriptId":"542","lineNumber":796,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1167}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1168}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1169}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1170}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1171}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1172}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":265,"columnNumber":17},"location":{"scriptId":"544","lineNumber":276,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1173}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":265,"columnNumber":17},"endLocation":{"scriptId":"544","lineNumber":278,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1174}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1175}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1176}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1177}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1178}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1179}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1180}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1181}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1182}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1183}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1184}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1185}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1186}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1187}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1188}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1189}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1190}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1191}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":1192}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1193}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1194}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1195}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1196}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1197}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1198}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1199}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1200}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1201}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1202}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1203}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1204}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1205}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1206}"}}],"reason":"other","hitBreakpoints":["4:46:20:1104"],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426159020,"metadata":{"connectionId":1,"message":{"seq":3604,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426159022,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":160}},"level":0} {"tag":"dap.send","timestamp":1588426159023,"metadata":{"connectionId":1,"message":{"seq":3605,"type":"response","request_seq":160,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426159029,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":161}},"level":0} {"tag":"dap.send","timestamp":1588426159030,"metadata":{"connectionId":1,"message":{"seq":3606,"type":"response","request_seq":161,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":473,"name":"recomputeContext","line":78,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":22}}},"level":0} {"tag":"dap.receive","timestamp":1588426159081,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":162}},"level":0} {"tag":"cdp.send","timestamp":1588426159081,"metadata":{"connectionId":0,"message":{"id":254,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426159081,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":163}},"level":0} {"tag":"cdp.send","timestamp":1588426159082,"metadata":{"connectionId":0,"message":{"id":255,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426159082,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":164}},"level":0} {"tag":"cdp.send","timestamp":1588426159082,"metadata":{"connectionId":0,"message":{"id":256,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426159082,"metadata":{"connectionId":0,"message":{"id":254,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426159082,"metadata":{"connectionId":0,"message":{"id":255,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426159083,"metadata":{"connectionId":0,"message":{"id":256,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426159083,"metadata":{"connectionId":1,"message":{"seq":3607,"type":"response","request_seq":162,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426159085,"metadata":{"connectionId":1,"message":{"seq":3608,"type":"response","request_seq":163,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426159086,"metadata":{"connectionId":1,"message":{"seq":3609,"type":"response","request_seq":164,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.send","timestamp":1588426159396,"metadata":{"connectionId":1,"message":{"seq":3610,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"setBreakpoints":{"operation":"setBreakpoints","totalTime":1088,"max":723.5,"avg":544,"stddev":253.9,"count":2,"failed":0},"setBreakpoints.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":2435.2,"max":694.2,"avg":187.3,"stddev":266.5,"count":13,"failed":0},"breakpointLocations.errors":[],"threads":{"operation":"threads","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"stackTrace.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426159453,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":165}},"level":0} {"tag":"dap.send","timestamp":1588426159453,"metadata":{"connectionId":1,"message":{"seq":3611,"type":"response","request_seq":165,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":474,"name":"<anonymous>","line":115,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"presentationHint":"normal"},{"id":475,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":476,"name":"<anonymous>","line":56,"column":84,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":477,"name":"<anonymous>","line":810,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":478,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":479,"name":"_set","line":166,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","sourceReference":0},"presentationHint":"normal"},{"id":480,"name":"set","line":153,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","sourceReference":0},"presentationHint":"normal"},{"id":481,"name":"setSelection","line":1390,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","path":"/Users/roblou/code/vscode/src/vs/base/browser/ui/list/listWidget.ts","sourceReference":0},"presentationHint":"normal"},{"id":482,"name":"selectElement","line":363,"column":9,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"presentationHint":"normal"},{"id":483,"name":"selectElement","line":681,"column":14,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":484,"name":"focusNotebookCell","line":983,"column":9,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":485,"name":"run","line":319,"column":11,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":486,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"},{"id":487,"name":"invokeFunction","line":61,"column":11,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/instantiation/common/instantiationService.ts","sourceReference":0},"presentationHint":"normal"},{"id":488,"name":"_tryExecuteCommand","line":84,"column":46,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0},"presentationHint":"normal"},{"id":489,"name":"<anonymous>","line":73,"column":52,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0},"presentationHint":"normal"},{"id":490,"name":"Promise.then","line":1,"column":1,"presentationHint":"label"},{"id":491,"name":"executeCommand","line":73,"column":37,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/services/commands/common/commandService.ts","sourceReference":0},"presentationHint":"normal"},{"id":492,"name":"_doDispatch","line":200,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","path":"/Users/roblou/code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":22}}},"level":0} {"tag":"dap.receive","timestamp":1588426161723,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":473},"type":"request","seq":166}},"level":0} {"tag":"dap.send","timestamp":1588426161724,"metadata":{"connectionId":1,"message":{"seq":3612,"type":"response","request_seq":166,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: recomputeContext","presentationHint":"locals","expensive":false,"variablesReference":877,"line":77,"column":28,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":93,"endColumn":4},{"name":"Closure (NotebookCellList)","presentationHint":"arguments","expensive":false,"variablesReference":878,"line":46,"column":2,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":123,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":879,"line":14,"column":579,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","sourceReference":1355579906},"endLine":698,"endColumn":2},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":880,"line":1,"column":1,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":700,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":881},{"name":"Global","expensive":true,"variablesReference":882}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426163942,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":474},"type":"request","seq":167}},"level":0} {"tag":"dap.send","timestamp":1588426163942,"metadata":{"connectionId":1,"message":{"seq":3613,"type":"response","request_seq":167,"command":"scopes","success":true,"body":{"scopes":[{"name":"Block","presentationHint":"locals","expensive":false,"variablesReference":883,"line":97,"column":27,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":117,"endColumn":5},{"name":"Local","presentationHint":"locals","expensive":false,"variablesReference":884,"line":96,"column":60,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":121,"endColumn":4},{"name":"Closure (NotebookCellList)","presentationHint":"arguments","expensive":false,"variablesReference":885,"line":46,"column":2,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":123,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":886,"line":14,"column":579,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","sourceReference":1355579906},"endLine":698,"endColumn":2},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":887,"line":1,"column":1,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":700,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":888},{"name":"Global","expensive":true,"variablesReference":889}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426163947,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":883},"type":"request","seq":168}},"level":0} {"tag":"cdp.send","timestamp":1588426163947,"metadata":{"connectionId":0,"message":{"id":257,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1100}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426163948,"metadata":{"connectionId":0,"message":{"id":258,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1100}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426163948,"metadata":{"connectionId":0,"message":{"id":257,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426163949,"metadata":{"connectionId":0,"message":{"id":258,"result":{"result":[{"name":"focusedElement","value":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1207}","preview":{"type":"object","description":"MarkdownCellViewModel","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"viewType","type":"string","value":"jupyter"},{"name":"notebookHandle","type":"number","value":"2"},{"name":"model","type":"object","value":"NotebookCellTextModel"},{"name":"id","type":"string","value":"00bfffc4-76b3-4b98-8d02-ce800396ef63"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426163951,"metadata":{"connectionId":1,"message":{"seq":3614,"type":"response","request_seq":168,"command":"variables","success":true,"body":{"variables":[{"name":"focusedElement","value":"MarkdownCellViewModel {_store: DisposableStore, viewType: 'jupyter', notebookHandle: 2, model: NotebookCellTextModel, id: '00bfffc4-76b3-4b98-8d02-ce800396ef63'}","evaluateName":"focusedElement","type":"object","variablesReference":890},{"name":"this","value":"undefined","evaluateName":"this","type":"undefined","variablesReference":0}]}}},"level":0} {"tag":"dap.send","timestamp":1588426164011,"metadata":{"connectionId":0,"message":{"seq":120,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.8,"max":0.8,"avg":0.8,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426164454,"metadata":{"connectionId":1,"message":{"seq":3615,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"stackTrace":{"operation":"stackTrace","totalTime":0.4,"max":0.4,"avg":0.4,"stddev":null,"count":1,"failed":0},"stackTrace.errors":[],"scopes":{"operation":"scopes","totalTime":2.1,"max":1.3,"avg":1.1,"stddev":0.3,"count":2,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":3.9,"max":3.9,"avg":3.9,"stddev":null,"count":1,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426168288,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":169}},"level":0} {"tag":"cdp.send","timestamp":1588426168288,"metadata":{"connectionId":0,"message":{"id":259,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426168289,"metadata":{"connectionId":0,"message":{"id":259,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426168290,"metadata":{"connectionId":1,"message":{"seq":3616,"type":"response","request_seq":169,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588426168295,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426168297,"metadata":{"connectionId":1,"message":{"seq":3617,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426168329,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":170}},"level":0} {"tag":"cdp.send","timestamp":1588426168329,"metadata":{"connectionId":0,"message":{"id":260,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426168329,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":171}},"level":0} {"tag":"cdp.send","timestamp":1588426168329,"metadata":{"connectionId":0,"message":{"id":261,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426168329,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":172}},"level":0} {"tag":"cdp.send","timestamp":1588426168331,"metadata":{"connectionId":0,"message":{"id":262,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426168333,"metadata":{"connectionId":0,"message":{"id":260,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426168333,"metadata":{"connectionId":0,"message":{"id":261,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426168336,"metadata":{"connectionId":0,"message":{"id":262,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426168336,"metadata":{"connectionId":1,"message":{"seq":3618,"type":"response","request_seq":170,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426168337,"metadata":{"connectionId":1,"message":{"seq":3619,"type":"response","request_seq":171,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426168338,"metadata":{"connectionId":1,"message":{"seq":3620,"type":"response","request_seq":172,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426169781,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":103,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1208}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1209}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1210}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1211}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1212}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1213}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1214}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1215}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1216}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1217}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1218}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1219}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1220}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1221}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1222}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1223}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1224}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1225}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1226}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1227}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1228}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1229}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1230}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1231}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1232}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1233}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1234}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1235}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1236}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1237}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1238}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1239}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1240}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1241}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1242}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1243}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1244}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1245}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1246}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1247}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1248}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1249}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1250}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1251}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1252}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1253}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1254}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1255}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1256}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1257}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1258}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1259}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1260}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1261}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1262}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1263}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1264}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1265}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1266}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1267}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1268}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1269}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1270}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":1271}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1272}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1273}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1274}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1275}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1276}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1277}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1278}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1279}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1280}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1281}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1282}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1283}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1284}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1285}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1286}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1287}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1288}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1289}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":1290}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1291}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1292}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1293}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1294}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1295}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1296}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1297}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1298}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1299}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1300}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1301}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1302}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1303}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1304}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1305}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1306}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1307}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1308}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1309}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1310}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1311}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1312}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1313}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1314}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1315}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1316}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1317}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1318}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1319}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1320}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1321}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1322}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1323}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1324}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1325}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1326}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1327}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1328}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1329}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1330}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1331}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1332}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1333}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1334}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1335}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":1336}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1337}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1338}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1339}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1340}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1341}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1342}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1343}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1344}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1345}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1346}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1347}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1348}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1349}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1350}"}}],"reason":"other","hitBreakpoints":["4:103:12:1535"],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426169786,"metadata":{"connectionId":1,"message":{"seq":3621,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426169788,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":173}},"level":0} {"tag":"dap.send","timestamp":1588426169788,"metadata":{"connectionId":1,"message":{"seq":3622,"type":"response","request_seq":173,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426169795,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":174}},"level":0} {"tag":"dap.send","timestamp":1588426169795,"metadata":{"connectionId":1,"message":{"seq":3623,"type":"response","request_seq":174,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":495,"name":"attachTextEditor","line":142,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426170016,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":175}},"level":0} {"tag":"cdp.send","timestamp":1588426170016,"metadata":{"connectionId":0,"message":{"id":263,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426170016,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":176}},"level":0} {"tag":"cdp.send","timestamp":1588426170017,"metadata":{"connectionId":0,"message":{"id":264,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426170020,"metadata":{"connectionId":0,"message":{"id":263,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426170020,"metadata":{"connectionId":0,"message":{"id":264,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426170022,"metadata":{"connectionId":1,"message":{"seq":3624,"type":"response","request_seq":175,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426170023,"metadata":{"connectionId":1,"message":{"seq":3625,"type":"response","request_seq":176,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426170222,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":177}},"level":0} {"tag":"dap.send","timestamp":1588426170223,"metadata":{"connectionId":1,"message":{"seq":3626,"type":"response","request_seq":177,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":496,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":497,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":498,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":499,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":500,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":501,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":502,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":503,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":504,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":505,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":506,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":507,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":508,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":509,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":510,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":511,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":512,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":513,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":514,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426170327,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":495},"type":"request","seq":178}},"level":0} {"tag":"dap.send","timestamp":1588426170328,"metadata":{"connectionId":1,"message":{"seq":3627,"type":"response","request_seq":178,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":891,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":892,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":893},{"name":"Global","expensive":true,"variablesReference":894}]}}},"level":0} {"tag":"dap.send","timestamp":1588426173295,"metadata":{"connectionId":1,"message":{"seq":3628,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"continue":{"operation":"continue","totalTime":2.8,"max":2.8,"avg":2.8,"stddev":null,"count":1,"failed":0},"continue.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":38.5,"max":9.2,"avg":7.7,"stddev":1.2,"count":5,"failed":0},"breakpointLocations.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":1.2,"max":1,"avg":0.6,"stddev":0.6,"count":2,"failed":0},"stackTrace.errors":[],"scopes":{"operation":"scopes","totalTime":1,"max":1,"avg":1,"stddev":null,"count":1,"failed":0},"scopes.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426173295,"metadata":{"connectionId":0,"message":{"seq":121,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.8,"max":0.8,"avg":0.8,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426173840,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":179}},"level":0} {"tag":"cdp.send","timestamp":1588426173840,"metadata":{"connectionId":0,"message":{"id":265,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426173841,"metadata":{"connectionId":0,"message":{"id":265,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426173843,"metadata":{"connectionId":1,"message":{"seq":3629,"type":"response","request_seq":179,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426173846,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426173847,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":106,"columnNumber":12},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1351}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1352}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1353}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1354}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1355}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1356}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1357}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1358}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1359}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1360}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1361}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1362}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1363}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1364}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1365}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1366}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1367}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1368}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1369}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1370}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1371}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1372}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1373}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1374}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1375}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1376}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1377}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1378}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1379}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1380}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1381}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1382}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1383}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1384}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1385}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1386}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1387}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1388}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1389}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1390}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1391}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1392}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1393}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1394}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1395}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1396}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1397}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1398}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1399}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1400}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1401}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1402}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1403}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1404}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1405}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1406}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1407}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1408}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1409}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1410}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1411}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1412}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1413}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":1414}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1415}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1416}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1417}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1418}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1419}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1420}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1421}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1422}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1423}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1424}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1425}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1426}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1427}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1428}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1429}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1430}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1431}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1432}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":1433}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1434}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1435}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1436}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1437}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1438}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1439}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1440}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1441}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1442}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1443}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1444}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1445}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1446}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1447}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1448}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1449}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1450}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1451}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1452}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1453}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1454}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1455}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1456}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1457}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1458}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1459}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1460}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1461}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1462}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1463}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1464}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1465}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1466}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1467}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1468}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1469}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1470}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1471}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1472}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1473}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1474}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1475}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1476}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1477}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1478}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":1479}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1480}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1481}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1482}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1483}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1484}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1485}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1486}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1487}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1488}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1489}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1490}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1491}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1492}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1493}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426173847,"metadata":{"connectionId":1,"message":{"seq":3630,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426173850,"metadata":{"connectionId":1,"message":{"seq":3631,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426173860,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":180}},"level":0} {"tag":"dap.send","timestamp":1588426173861,"metadata":{"connectionId":1,"message":{"seq":3632,"type":"response","request_seq":180,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426173863,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":181}},"level":0} {"tag":"dap.send","timestamp":1588426173863,"metadata":{"connectionId":1,"message":{"seq":3633,"type":"response","request_seq":181,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":523,"name":"attachTextEditor","line":146,"column":3,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426173905,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":182}},"level":0} {"tag":"cdp.send","timestamp":1588426173905,"metadata":{"connectionId":0,"message":{"id":266,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426173906,"metadata":{"connectionId":0,"message":{"id":266,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426173908,"metadata":{"connectionId":1,"message":{"seq":3634,"type":"response","request_seq":182,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426174268,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":523},"type":"request","seq":183}},"level":0} {"tag":"dap.send","timestamp":1588426174268,"metadata":{"connectionId":1,"message":{"seq":3635,"type":"response","request_seq":183,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":895,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":896,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":897},{"name":"Global","expensive":true,"variablesReference":898}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426174280,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":895},"type":"request","seq":184}},"level":0} {"tag":"cdp.send","timestamp":1588426174280,"metadata":{"connectionId":0,"message":{"id":267,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1351}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426174280,"metadata":{"connectionId":0,"message":{"id":268,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1351}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426174281,"metadata":{"connectionId":0,"message":{"id":267,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426174281,"metadata":{"connectionId":0,"message":{"id":268,"result":{"result":[{"name":"editor","value":{"type":"object","className":"CodeEditorWidget","description":"CodeEditorWidget","objectId":"{\"injectedScriptId\":1,\"id\":1494}","preview":{"type":"object","description":"CodeEditorWidget","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"_onDidDispose","type":"object","value":"Emitter"},{"name":"onDidDispose","type":"function","value":""},{"name":"_onDidChangeModelContent","type":"object","value":"Emitter"},{"name":"onDidChangeModelContent","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426174286,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":185}},"level":0} {"tag":"dap.send","timestamp":1588426174286,"metadata":{"connectionId":1,"message":{"seq":3636,"type":"response","request_seq":185,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":524,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":525,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":526,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":527,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":528,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":529,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":530,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":531,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":532,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":533,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":534,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":535,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":536,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":537,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":538,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":539,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":540,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":541,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":542,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.send","timestamp":1588426174586,"metadata":{"connectionId":1,"message":{"seq":3637,"type":"response","request_seq":184,"command":"variables","success":true,"body":{"variables":[{"name":"editor","value":"CodeEditorWidget {_store: DisposableStore, _onDidDispose: Emitter, onDidDispose: ƒ, _onDidChangeModelContent: Emitter, onDidChangeModelContent: ƒ}","evaluateName":"editor","type":"object","variablesReference":899},{"name":"this","value":"MarkdownCellViewModel","evaluateName":"this","type":"object","variablesReference":900}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426175202,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":186}},"level":0} {"tag":"cdp.send","timestamp":1588426175202,"metadata":{"connectionId":0,"message":{"id":269,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426175207,"metadata":{"connectionId":0,"message":{"id":269,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426175208,"metadata":{"connectionId":1,"message":{"seq":3638,"type":"response","request_seq":186,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426175211,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426175212,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":113,"columnNumber":12},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1495}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1496}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1497}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1498}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1499}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1500}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1501}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1502}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1503}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1504}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1505}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1506}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1507}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1508}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1509}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1510}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1511}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1512}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1513}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1514}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1515}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1516}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1517}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1518}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1519}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1520}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1521}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1522}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1523}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1524}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1525}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1526}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1527}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1528}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1529}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1530}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1531}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1532}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1533}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1534}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1535}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1536}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1537}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1538}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1539}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1540}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1541}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1542}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1543}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1544}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1545}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1546}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1547}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1548}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1549}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1550}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1551}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1552}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1553}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1554}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1555}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1556}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1557}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":1558}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1559}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1560}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1561}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1562}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1563}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1564}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1565}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1566}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1567}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1568}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1569}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1570}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1571}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1572}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1573}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1574}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1575}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1576}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":1577}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1578}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1579}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1580}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1581}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1582}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1583}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1584}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1585}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1586}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1587}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1588}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1589}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1590}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1591}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1592}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1593}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1594}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1595}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1596}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1597}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1598}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1599}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1600}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1601}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1602}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1603}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1604}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1605}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1606}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1607}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1608}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1609}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1610}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1611}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1612}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1613}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1614}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1615}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1616}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1617}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1618}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1619}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1620}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1621}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1622}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":1623}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1624}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1625}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1626}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1627}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1628}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1629}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1630}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1631}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1632}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1633}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1634}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1635}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1636}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1637}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426175212,"metadata":{"connectionId":1,"message":{"seq":3639,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426175213,"metadata":{"connectionId":1,"message":{"seq":3640,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426175214,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":187}},"level":0} {"tag":"dap.send","timestamp":1588426175214,"metadata":{"connectionId":1,"message":{"seq":3641,"type":"response","request_seq":187,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426175217,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":188}},"level":0} {"tag":"dap.send","timestamp":1588426175217,"metadata":{"connectionId":1,"message":{"seq":3642,"type":"response","request_seq":188,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":551,"name":"attachTextEditor","line":154,"column":3,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426175280,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":189}},"level":0} {"tag":"cdp.send","timestamp":1588426175281,"metadata":{"connectionId":0,"message":{"id":270,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426175283,"metadata":{"connectionId":0,"message":{"id":270,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426175286,"metadata":{"connectionId":1,"message":{"seq":3643,"type":"response","request_seq":189,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426175633,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":551},"type":"request","seq":190}},"level":0} {"tag":"dap.send","timestamp":1588426175634,"metadata":{"connectionId":1,"message":{"seq":3644,"type":"response","request_seq":190,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":901,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":902,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":903},{"name":"Global","expensive":true,"variablesReference":904}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426175636,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":901},"type":"request","seq":191}},"level":0} {"tag":"cdp.send","timestamp":1588426175636,"metadata":{"connectionId":0,"message":{"id":271,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1495}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426175637,"metadata":{"connectionId":0,"message":{"id":272,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1495}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426175637,"metadata":{"connectionId":0,"message":{"id":271,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426175638,"metadata":{"connectionId":0,"message":{"id":272,"result":{"result":[{"name":"editor","value":{"type":"object","className":"CodeEditorWidget","description":"CodeEditorWidget","objectId":"{\"injectedScriptId\":1,\"id\":1638}","preview":{"type":"object","description":"CodeEditorWidget","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"_onDidDispose","type":"object","value":"Emitter"},{"name":"onDidDispose","type":"function","value":""},{"name":"_onDidChangeModelContent","type":"object","value":"Emitter"},{"name":"onDidChangeModelContent","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426175640,"metadata":{"connectionId":1,"message":{"seq":3645,"type":"response","request_seq":191,"command":"variables","success":true,"body":{"variables":[{"name":"editor","value":"CodeEditorWidget {_store: DisposableStore, _onDidDispose: Emitter, onDidDispose: ƒ, _onDidChangeModelContent: Emitter, onDidChangeModelContent: ƒ}","evaluateName":"editor","type":"object","variablesReference":905},{"name":"this","value":"MarkdownCellViewModel","evaluateName":"this","type":"object","variablesReference":906}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426175664,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":192}},"level":0} {"tag":"dap.send","timestamp":1588426175664,"metadata":{"connectionId":1,"message":{"seq":3646,"type":"response","request_seq":192,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":552,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":553,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":554,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":555,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":556,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":557,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":558,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":559,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":560,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":561,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":562,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":563,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":564,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":565,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":566,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":567,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":568,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":569,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":570,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.send","timestamp":1588426178846,"metadata":{"connectionId":1,"message":{"seq":3647,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"next":{"operation":"next","totalTime":9.4,"max":6.6,"avg":4.7,"stddev":2.7,"count":2,"failed":0},"next.errors":[],"threads":{"operation":"threads","totalTime":0.3,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":1.6,"max":0.7,"avg":0.4,"stddev":0.3,"count":4,"failed":0},"stackTrace.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":8.2,"max":5.2,"avg":4.1,"stddev":1.6,"count":2,"failed":0},"breakpointLocations.errors":[],"scopes":{"operation":"scopes","totalTime":0.8,"max":0.4,"avg":0.4,"stddev":0,"count":2,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":310.5,"max":306.3,"avg":155.3,"stddev":213.6,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426178847,"metadata":{"connectionId":0,"message":{"seq":122,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":1.5,"max":0.8,"avg":0.7,"stddev":0,"count":2,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426184705,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"this._cursorChangeListener","frameId":551,"context":"hover"},"type":"request","seq":193}},"level":0} {"tag":"cdp.send","timestamp":1588426184706,"metadata":{"connectionId":0,"message":{"id":273,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"this._cursorChangeListener","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"timeout":500,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426184709,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1633","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":26,"executionContextId":1,"hash":"37a1cb5e121c30817f9d715752c90c98478e5bb1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":26,"stackTrace":{"callFrames":[{"functionName":"attachTextEditor","scriptId":"1535","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","lineNumber":113,"columnNumber":12}],"parentId":{"id":"414"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426184709,"metadata":{"connectionId":0,"message":{"id":273,"result":{"result":{"type":"object","subtype":"null","value":null}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588426184712,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588426184721,"metadata":{"connectionId":1,"message":{"seq":3648,"type":"response","request_seq":193,"command":"evaluate","success":true,"body":{"type":"object","result":"null","variablesReference":0}}},"level":0} {"tag":"dap.send","timestamp":1588426184847,"metadata":{"connectionId":1,"message":{"seq":3649,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756712","path":"<eval>/VM633756712","sourceReference":633756712}}}},"level":0} {"tag":"dap.receive","timestamp":1588426185568,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"this._textEditor","frameId":551,"context":"hover"},"type":"request","seq":194}},"level":0} {"tag":"cdp.send","timestamp":1588426185568,"metadata":{"connectionId":0,"message":{"id":274,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"this._textEditor","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"timeout":500,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426185569,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1634","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":16,"executionContextId":1,"hash":"1eba490d2280f26f08f254c3029facae7f941e4a","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":16,"stackTrace":{"callFrames":[{"functionName":"attachTextEditor","scriptId":"1535","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","lineNumber":113,"columnNumber":12}],"parentId":{"id":"414"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426185570,"metadata":{"connectionId":0,"message":{"id":274,"result":{"result":{"type":"undefined"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588426185572,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588426185573,"metadata":{"connectionId":1,"message":{"seq":3650,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756713","path":"<eval>/VM633756713","sourceReference":633756713}}}},"level":0} {"tag":"dap.send","timestamp":1588426185573,"metadata":{"connectionId":1,"message":{"seq":3651,"type":"response","request_seq":194,"command":"evaluate","success":true,"body":{"type":"undefined","result":"undefined","variablesReference":0}}},"level":0} {"tag":"dap.send","timestamp":1588426189713,"metadata":{"connectionId":0,"message":{"seq":123,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426189723,"metadata":{"connectionId":1,"message":{"seq":3652,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"evaluate":{"operation":"evaluate","totalTime":21.1,"max":16.1,"avg":10.6,"stddev":7.8,"count":2,"failed":0},"evaluate.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426194247,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":195}},"level":0} {"tag":"cdp.send","timestamp":1588426194247,"metadata":{"connectionId":0,"message":{"id":275,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426194248,"metadata":{"connectionId":0,"message":{"id":275,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426194250,"metadata":{"connectionId":1,"message":{"seq":3653,"type":"response","request_seq":195,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426194253,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426194254,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":114,"columnNumber":12},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1639}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1640}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1641}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1642}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1643}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1644}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1645}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1646}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1647}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1648}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1649}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1650}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1651}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1652}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1653}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1654}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1655}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1656}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1657}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1658}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1659}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1660}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1661}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1662}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1663}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1664}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1665}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1666}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1667}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1668}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1669}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1670}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1671}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1672}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1673}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1674}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1675}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1676}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1677}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1678}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1679}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1680}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1681}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1682}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1683}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1684}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1685}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1686}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1687}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1688}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1689}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1690}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1691}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1692}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1693}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1694}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1695}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1696}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1697}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1698}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1699}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1700}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1701}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":1702}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1703}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1704}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1705}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1706}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1707}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1708}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1709}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1710}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1711}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1712}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1713}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1714}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1715}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1716}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1717}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1718}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1719}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1720}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":1721}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1722}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1723}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1724}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1725}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1726}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1727}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1728}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1729}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1730}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1731}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1732}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1733}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1734}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1735}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1736}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1737}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1738}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1739}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1740}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1741}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1742}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1743}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1744}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1745}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1746}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1747}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1748}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1749}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1750}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1751}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1752}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1753}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1754}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1755}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1756}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1757}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1758}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1759}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1760}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1761}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1762}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1763}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1764}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1765}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1766}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":1767}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1768}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1769}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1770}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1771}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1772}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1773}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1774}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1775}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1776}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1777}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1778}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1779}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1780}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1781}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426194254,"metadata":{"connectionId":1,"message":{"seq":3654,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426194256,"metadata":{"connectionId":1,"message":{"seq":3655,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426194277,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":196}},"level":0} {"tag":"dap.send","timestamp":1588426194277,"metadata":{"connectionId":1,"message":{"seq":3656,"type":"response","request_seq":196,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426194281,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":197}},"level":0} {"tag":"dap.send","timestamp":1588426194281,"metadata":{"connectionId":1,"message":{"seq":3657,"type":"response","request_seq":197,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":579,"name":"attachTextEditor","line":156,"column":3,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426194284,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":198}},"level":0} {"tag":"cdp.send","timestamp":1588426194284,"metadata":{"connectionId":0,"message":{"id":276,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426194285,"metadata":{"connectionId":0,"message":{"id":276,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426194288,"metadata":{"connectionId":1,"message":{"seq":3658,"type":"response","request_seq":198,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426194364,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":199}},"level":0} {"tag":"cdp.send","timestamp":1588426194365,"metadata":{"connectionId":0,"message":{"id":277,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426194366,"metadata":{"connectionId":0,"message":{"id":277,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426194367,"metadata":{"connectionId":1,"message":{"seq":3659,"type":"response","request_seq":199,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426194687,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":579},"type":"request","seq":200}},"level":0} {"tag":"dap.send","timestamp":1588426194687,"metadata":{"connectionId":1,"message":{"seq":3660,"type":"response","request_seq":200,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":907,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":908,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":909},{"name":"Global","expensive":true,"variablesReference":910}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426194702,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":907},"type":"request","seq":201}},"level":0} {"tag":"cdp.send","timestamp":1588426194702,"metadata":{"connectionId":0,"message":{"id":278,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1639}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426194702,"metadata":{"connectionId":0,"message":{"id":279,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1639}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426194703,"metadata":{"connectionId":0,"message":{"id":278,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426194703,"metadata":{"connectionId":0,"message":{"id":279,"result":{"result":[{"name":"editor","value":{"type":"object","className":"CodeEditorWidget","description":"CodeEditorWidget","objectId":"{\"injectedScriptId\":1,\"id\":1782}","preview":{"type":"object","description":"CodeEditorWidget","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"_onDidDispose","type":"object","value":"Emitter"},{"name":"onDidDispose","type":"function","value":""},{"name":"_onDidChangeModelContent","type":"object","value":"Emitter"},{"name":"onDidChangeModelContent","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426194725,"metadata":{"connectionId":1,"message":{"seq":3661,"type":"response","request_seq":201,"command":"variables","success":true,"body":{"variables":[{"name":"editor","value":"CodeEditorWidget {_store: DisposableStore, _onDidDispose: Emitter, onDidDispose: ƒ, _onDidChangeModelContent: Emitter, onDidChangeModelContent: ƒ}","evaluateName":"editor","type":"object","variablesReference":911},{"name":"this","value":"MarkdownCellViewModel","evaluateName":"this","type":"object","variablesReference":912}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426194725,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":202}},"level":0} {"tag":"dap.send","timestamp":1588426194725,"metadata":{"connectionId":1,"message":{"seq":3662,"type":"response","request_seq":202,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":580,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":581,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":582,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":583,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":584,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":585,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":586,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":587,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":588,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":589,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":590,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":591,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":592,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":593,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":594,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":595,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":596,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":597,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":598,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426197085,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":203}},"level":0} {"tag":"cdp.send","timestamp":1588426197085,"metadata":{"connectionId":0,"message":{"id":280,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426197086,"metadata":{"connectionId":0,"message":{"id":280,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426197087,"metadata":{"connectionId":1,"message":{"seq":3663,"type":"response","request_seq":203,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426197092,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426197092,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":115,"columnNumber":16},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1783}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1784}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1785}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1786}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1787}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1788}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1789}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1790}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1791}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1792}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1793}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1794}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1795}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1796}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1797}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1798}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1799}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1800}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1801}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1802}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1803}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1804}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1805}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1806}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1807}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1808}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1809}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1810}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1811}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1812}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1813}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1814}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1815}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1816}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1817}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1818}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1819}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1820}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1821}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1822}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1823}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1824}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1825}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1826}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1827}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1828}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1829}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1830}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1831}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1832}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1833}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1834}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1835}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1836}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1837}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1838}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1839}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1840}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1841}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1842}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1843}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1844}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1845}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":1846}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1847}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1848}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1849}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1850}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1851}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1852}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1853}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1854}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1855}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1856}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1857}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1858}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1859}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1860}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1861}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1862}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1863}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1864}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":1865}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1866}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1867}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1868}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1869}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1870}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1871}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1872}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1873}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1874}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1875}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1876}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1877}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1878}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1879}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1880}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1881}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1882}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1883}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1884}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1885}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1886}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1887}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1888}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1889}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1890}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":1891}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1892}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1893}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1894}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1895}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1896}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1897}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1898}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1899}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1900}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1901}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1902}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1903}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1904}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1905}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1906}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1907}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1908}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1909}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1910}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":1911}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1912}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1913}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1914}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1915}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1916}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1917}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1918}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1919}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1920}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1921}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1922}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1923}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1924}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":1925}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426197093,"metadata":{"connectionId":1,"message":{"seq":3664,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426197095,"metadata":{"connectionId":1,"message":{"seq":3665,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426197109,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":204}},"level":0} {"tag":"dap.send","timestamp":1588426197109,"metadata":{"connectionId":1,"message":{"seq":3666,"type":"response","request_seq":204,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426197113,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":205}},"level":0} {"tag":"dap.send","timestamp":1588426197113,"metadata":{"connectionId":1,"message":{"seq":3667,"type":"response","request_seq":205,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":607,"name":"attachTextEditor","line":157,"column":4,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426197147,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":206}},"level":0} {"tag":"cdp.send","timestamp":1588426197148,"metadata":{"connectionId":0,"message":{"id":281,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426197149,"metadata":{"connectionId":0,"message":{"id":281,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426197150,"metadata":{"connectionId":1,"message":{"seq":3668,"type":"response","request_seq":206,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426197518,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":607},"type":"request","seq":207}},"level":0} {"tag":"dap.send","timestamp":1588426197519,"metadata":{"connectionId":1,"message":{"seq":3669,"type":"response","request_seq":207,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":913,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":914,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":915},{"name":"Global","expensive":true,"variablesReference":916}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426197521,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":913},"type":"request","seq":208}},"level":0} {"tag":"cdp.send","timestamp":1588426197521,"metadata":{"connectionId":0,"message":{"id":282,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1783}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426197521,"metadata":{"connectionId":0,"message":{"id":283,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1783}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426197522,"metadata":{"connectionId":0,"message":{"id":282,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426197522,"metadata":{"connectionId":0,"message":{"id":283,"result":{"result":[{"name":"editor","value":{"type":"object","className":"CodeEditorWidget","description":"CodeEditorWidget","objectId":"{\"injectedScriptId\":1,\"id\":1926}","preview":{"type":"object","description":"CodeEditorWidget","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"_onDidDispose","type":"object","value":"Emitter"},{"name":"onDidDispose","type":"function","value":""},{"name":"_onDidChangeModelContent","type":"object","value":"Emitter"},{"name":"onDidChangeModelContent","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426197536,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":209}},"level":0} {"tag":"dap.send","timestamp":1588426197537,"metadata":{"connectionId":1,"message":{"seq":3670,"type":"response","request_seq":209,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":608,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":609,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":610,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":611,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":612,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":613,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":614,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":615,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":616,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":617,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":618,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":619,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":620,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":621,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":622,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":623,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":624,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":625,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":626,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.send","timestamp":1588426197675,"metadata":{"connectionId":1,"message":{"seq":3671,"type":"response","request_seq":208,"command":"variables","success":true,"body":{"variables":[{"name":"editor","value":"CodeEditorWidget {_store: DisposableStore, _onDidDispose: Emitter, onDidDispose: ƒ, _onDidChangeModelContent: Emitter, onDidChangeModelContent: ƒ}","evaluateName":"editor","type":"object","variablesReference":917},{"name":"this","value":"MarkdownCellViewModel","evaluateName":"this","type":"object","variablesReference":918}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426198963,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":210}},"level":0} {"tag":"cdp.send","timestamp":1588426198963,"metadata":{"connectionId":0,"message":{"id":284,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426198964,"metadata":{"connectionId":0,"message":{"id":284,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426198965,"metadata":{"connectionId":1,"message":{"seq":3672,"type":"response","request_seq":210,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426198970,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426198971,"metadata":{"connectionId":1,"message":{"seq":3673,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588426198975,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":117,"columnNumber":12},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1927}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1928}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1929}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1930}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1931}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1932}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1933}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1934}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1935}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1936}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1937}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1938}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1939}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1940}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1941}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1942}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1943}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":1944}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1945}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1946}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1947}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1948}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1949}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1950}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1951}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1952}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1953}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1954}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1955}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1956}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1957}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1958}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1959}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1960}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1961}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1962}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1963}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1964}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1965}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1966}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1967}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":1968}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1969}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1970}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1971}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1972}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1973}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1974}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1975}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1976}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1977}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1978}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1979}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1980}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1981}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1982}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1983}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1984}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":1985}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1986}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1987}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1988}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1989}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":1990}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1991}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1992}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1993}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":1994}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":1995}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1996}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1997}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1998}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":1999}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2000}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2001}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2002}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2003}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2004}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2005}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2006}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2007}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2008}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":2009}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2010}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2011}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2012}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2013}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2014}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2015}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2016}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2017}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2018}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2019}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2020}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2021}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2022}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2023}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2024}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2025}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2026}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2027}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2028}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2029}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2030}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2031}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2032}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2033}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2034}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":2035}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2036}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2037}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2038}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2039}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2040}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2041}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2042}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2043}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2044}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2045}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2046}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2047}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2048}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2049}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2050}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2051}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2052}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2053}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2054}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":2055}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2056}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2057}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2058}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2059}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2060}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2061}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2062}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2063}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2064}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2065}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2066}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2067}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2068}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2069}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426198976,"metadata":{"connectionId":1,"message":{"seq":3674,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426198981,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":211}},"level":0} {"tag":"dap.send","timestamp":1588426198981,"metadata":{"connectionId":1,"message":{"seq":3675,"type":"response","request_seq":211,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426198983,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":212}},"level":0} {"tag":"dap.send","timestamp":1588426198983,"metadata":{"connectionId":1,"message":{"seq":3676,"type":"response","request_seq":212,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":635,"name":"attachTextEditor","line":160,"column":3,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426199014,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":213}},"level":0} {"tag":"cdp.send","timestamp":1588426199014,"metadata":{"connectionId":0,"message":{"id":285,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426199015,"metadata":{"connectionId":0,"message":{"id":285,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426199016,"metadata":{"connectionId":1,"message":{"seq":3677,"type":"response","request_seq":213,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426199251,"metadata":{"connectionId":1,"message":{"seq":3678,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"next":{"operation":"next","totalTime":8.1,"max":2.8,"avg":2.7,"stddev":0.1,"count":3,"failed":0},"next.errors":[],"threads":{"operation":"threads","totalTime":0.5,"max":0.2,"avg":0.2,"stddev":0,"count":3,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":1.4,"max":0.4,"avg":0.3,"stddev":0.1,"count":5,"failed":0},"stackTrace.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":12.9,"max":4.5,"avg":3.2,"stddev":0.9,"count":4,"failed":0},"breakpointLocations.errors":[],"scopes":{"operation":"scopes","totalTime":0.8,"max":0.4,"avg":0.4,"stddev":0,"count":2,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":177.6,"max":154.7,"avg":88.8,"stddev":93.1,"count":2,"failed":0},"variables.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426199253,"metadata":{"connectionId":0,"message":{"seq":124,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":3,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":2.4,"max":0.8,"avg":0.8,"stddev":0,"count":3,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426199388,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":635},"type":"request","seq":214}},"level":0} {"tag":"dap.send","timestamp":1588426199388,"metadata":{"connectionId":1,"message":{"seq":3679,"type":"response","request_seq":214,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":919,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":920,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":921},{"name":"Global","expensive":true,"variablesReference":922}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426199390,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":919},"type":"request","seq":215}},"level":0} {"tag":"cdp.send","timestamp":1588426199390,"metadata":{"connectionId":0,"message":{"id":286,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1927}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426199390,"metadata":{"connectionId":0,"message":{"id":287,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":1927}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426199391,"metadata":{"connectionId":0,"message":{"id":286,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426199391,"metadata":{"connectionId":0,"message":{"id":287,"result":{"result":[{"name":"editor","value":{"type":"object","className":"CodeEditorWidget","description":"CodeEditorWidget","objectId":"{\"injectedScriptId\":1,\"id\":2070}","preview":{"type":"object","description":"CodeEditorWidget","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"_onDidDispose","type":"object","value":"Emitter"},{"name":"onDidDispose","type":"function","value":""},{"name":"_onDidChangeModelContent","type":"object","value":"Emitter"},{"name":"onDidChangeModelContent","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426199393,"metadata":{"connectionId":1,"message":{"seq":3680,"type":"response","request_seq":215,"command":"variables","success":true,"body":{"variables":[{"name":"editor","value":"CodeEditorWidget {_store: DisposableStore, _onDidDispose: Emitter, onDidDispose: ƒ, _onDidChangeModelContent: Emitter, onDidChangeModelContent: ƒ}","evaluateName":"editor","type":"object","variablesReference":923},{"name":"this","value":"MarkdownCellViewModel","evaluateName":"this","type":"object","variablesReference":924}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426199409,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":216}},"level":0} {"tag":"dap.send","timestamp":1588426199409,"metadata":{"connectionId":1,"message":{"seq":3681,"type":"response","request_seq":216,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":636,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":637,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":638,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":639,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":640,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":641,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":642,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":643,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":644,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":645,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":646,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":647,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":648,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":649,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":650,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":651,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":652,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":653,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":654,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426203336,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":217}},"level":0} {"tag":"cdp.send","timestamp":1588426203337,"metadata":{"connectionId":0,"message":{"id":288,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426203339,"metadata":{"connectionId":0,"message":{"id":288,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426203341,"metadata":{"connectionId":1,"message":{"seq":3682,"type":"response","request_seq":217,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426203345,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426203345,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":128,"columnNumber":12},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2071}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2072}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2073}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2074}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2075}"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2076}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2077}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2078}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2079}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2080}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2081}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":2082}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2083}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2084}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2085}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2086}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2087}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":2088}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2089}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2090}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2091}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2092}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2093}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2094}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2095}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2096}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2097}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2098}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2099}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2100}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2101}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2102}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2103}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2104}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2105}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2106}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2107}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2108}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2109}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2110}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2111}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2112}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2113}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2114}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2115}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2116}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2117}"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2118}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2119}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2120}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2121}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2122}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2123}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2124}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2125}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2126}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2127}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2128}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2129}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2130}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2131}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2132}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2133}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":2134}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2135}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2136}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2137}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2138}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2139}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2140}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2141}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2142}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2143}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2144}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2145}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2146}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2147}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2148}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2149}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2150}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2151}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2152}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":2153}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2154}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2155}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2156}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2157}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2158}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2159}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2160}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2161}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2162}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2163}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2164}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2165}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2166}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2167}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2168}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2169}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2170}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2171}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2172}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2173}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2174}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2175}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2176}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2177}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2178}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":2179}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2180}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2181}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2182}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2183}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2184}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2185}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2186}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2187}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2188}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2189}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2190}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2191}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2192}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2193}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2194}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2195}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2196}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2197}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2198}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":2199}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2200}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2201}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2202}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2203}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2204}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2205}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2206}"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2207}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2208}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2209}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2210}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2211}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2212}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2213}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426203346,"metadata":{"connectionId":1,"message":{"seq":3683,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426203347,"metadata":{"connectionId":1,"message":{"seq":3684,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426203362,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":218}},"level":0} {"tag":"dap.send","timestamp":1588426203362,"metadata":{"connectionId":1,"message":{"seq":3685,"type":"response","request_seq":218,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426203365,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":219}},"level":0} {"tag":"dap.send","timestamp":1588426203365,"metadata":{"connectionId":1,"message":{"seq":3686,"type":"response","request_seq":219,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":663,"name":"attachTextEditor","line":172,"column":3,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.receive","timestamp":1588426203447,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":220}},"level":0} {"tag":"cdp.send","timestamp":1588426203447,"metadata":{"connectionId":0,"message":{"id":289,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426203448,"metadata":{"connectionId":0,"message":{"id":289,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426203450,"metadata":{"connectionId":1,"message":{"seq":3687,"type":"response","request_seq":220,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426203771,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":663},"type":"request","seq":221}},"level":0} {"tag":"dap.send","timestamp":1588426203771,"metadata":{"connectionId":1,"message":{"seq":3688,"type":"response","request_seq":221,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local: attachTextEditor","presentationHint":"locals","expensive":false,"variablesReference":925,"line":141,"column":18,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"endLine":175,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":926,"line":5,"column":274,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","sourceReference":1963607853},"endLine":287,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":927},{"name":"Global","expensive":true,"variablesReference":928}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426203773,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":925},"type":"request","seq":222}},"level":0} {"tag":"cdp.send","timestamp":1588426203774,"metadata":{"connectionId":0,"message":{"id":290,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":2071}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426203774,"metadata":{"connectionId":0,"message":{"id":291,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":2071}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426203775,"metadata":{"connectionId":0,"message":{"id":290,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426203775,"metadata":{"connectionId":0,"message":{"id":291,"result":{"result":[{"name":"editor","value":{"type":"object","className":"CodeEditorWidget","description":"CodeEditorWidget","objectId":"{\"injectedScriptId\":1,\"id\":2214}","preview":{"type":"object","description":"CodeEditorWidget","overflow":true,"properties":[{"name":"_store","type":"object","value":"DisposableStore"},{"name":"_onDidDispose","type":"object","value":"Emitter"},{"name":"onDidDispose","type":"function","value":""},{"name":"_onDidChangeModelContent","type":"object","value":"Emitter"},{"name":"onDidChangeModelContent","type":"function","value":""}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426203778,"metadata":{"connectionId":1,"message":{"seq":3689,"type":"response","request_seq":222,"command":"variables","success":true,"body":{"variables":[{"name":"editor","value":"CodeEditorWidget {_store: DisposableStore, _onDidDispose: Emitter, onDidDispose: ƒ, _onDidChangeModelContent: Emitter, onDidChangeModelContent: ƒ}","evaluateName":"editor","type":"object","variablesReference":929},{"name":"this","value":"MarkdownCellViewModel","evaluateName":"this","type":"object","variablesReference":930}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426203792,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":223}},"level":0} {"tag":"dap.send","timestamp":1588426203792,"metadata":{"connectionId":1,"message":{"seq":3690,"type":"response","request_seq":223,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":664,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":665,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":666,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":667,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":668,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":669,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":670,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":671,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":672,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":673,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":674,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":675,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":676,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":677,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":678,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":679,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":680,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"},{"id":681,"name":"run","line":654,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts","sourceReference":0},"presentationHint":"normal"},{"id":682,"name":"handler","line":432,"column":42,"source":{"name":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","path":"/Users/roblou/code/vscode/src/vs/platform/actions/common/actions.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":28}}},"level":0} {"tag":"dap.send","timestamp":1588426204391,"metadata":{"connectionId":1,"message":{"seq":3691,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"scopes":{"operation":"scopes","totalTime":0.9,"max":0.5,"avg":0.4,"stddev":0.1,"count":2,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":7.1,"max":4.3,"avg":3.5,"stddev":1,"count":2,"failed":0},"variables.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":1.2,"max":0.5,"avg":0.4,"stddev":0.2,"count":3,"failed":0},"stackTrace.errors":[],"next":{"operation":"next","totalTime":4.9,"max":4.9,"avg":4.9,"stddev":null,"count":1,"failed":0},"next.errors":[],"threads":{"operation":"threads","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"threads.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":2.7,"max":2.7,"avg":2.7,"stddev":null,"count":1,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426208349,"metadata":{"connectionId":0,"message":{"seq":125,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.1,"max":0.1,"avg":0.1,"stddev":null,"count":1,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":0.9,"max":0.9,"avg":0.9,"stddev":null,"count":1,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426219901,"metadata":{"connectionId":1,"message":{"command":"continue","arguments":{"threadId":0},"type":"request","seq":224}},"level":0} {"tag":"cdp.send","timestamp":1588426219901,"metadata":{"connectionId":0,"message":{"id":292,"method":"Debugger.resume","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426219902,"metadata":{"connectionId":0,"message":{"id":292,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426219904,"metadata":{"connectionId":1,"message":{"seq":3692,"type":"response","request_seq":224,"command":"continue","success":true,"body":{"allThreadsContinued":false}}},"level":0} {"tag":"cdp.receive","timestamp":1588426219909,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426219910,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1104","lineNumber":69,"columnNumber":82},"location":{"scriptId":"1104","lineNumber":70,"columnNumber":34},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2215}"},"startLocation":{"scriptId":"1104","lineNumber":69,"columnNumber":82},"endLocation":{"scriptId":"1104","lineNumber":73,"columnNumber":25}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2216}"},"name":"NotebookCellList","startLocation":{"scriptId":"1104","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1104","lineNumber":85,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2217}"},"name":"NotebookCellList","startLocation":{"scriptId":"1104","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1104","lineNumber":85,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2218}"},"startLocation":{"scriptId":"1104","lineNumber":13,"columnNumber":578},"endLocation":{"scriptId":"1104","lineNumber":697,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2219}"},"startLocation":{"scriptId":"1104","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1104","lineNumber":699,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2220}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2221}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2222}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2223}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2224}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2225}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2226}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2227}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2228}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":129,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2229}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2230}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2231}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2232}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2233}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2234}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2235}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2236}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2237}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2238}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2239}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":2240}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2241}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2242}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2243}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2244}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2245}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":2246}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2247}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2248}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2249}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2250}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2251}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2252}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2253}"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2254}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2255}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2256}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2257}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2258}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2259}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2260}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2261}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2262}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2263}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2264}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2265}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2266}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2267}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2268}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2269}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2270}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2271}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2272}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2273}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2274}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2275}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2276}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2277}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2278}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2279}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2280}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2281}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2282}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2283}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2284}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2285}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2286}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2287}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2288}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2289}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2290}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2291}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":2292}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2293}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2294}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2295}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2296}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2297}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2298}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2299}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2300}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2301}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2302}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2303}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2304}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2305}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2306}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2307}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2308}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2309}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2310}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":2311}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2312}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2313}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2314}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2315}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2316}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2317}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2318}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2319}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2320}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2321}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2322}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2323}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2324}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2325}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2326}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2327}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2328}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2329}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2330}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2331}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2332}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2333}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2334}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2335}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2336}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":2337}"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2338}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2339}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2340}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2341}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2342}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2343}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2344}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2345}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2346}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2347}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2348}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2349}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2350}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2351}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2352}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2353}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2354}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2355}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2356}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":2357}"}},{"callFrameId":"{\"ordinal\":23,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2358}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2359}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2360}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2361}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2362}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2363}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2364}"}},{"callFrameId":"{\"ordinal\":24,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2365}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2366}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2367}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2368}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2369}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2370}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2371}"}}],"reason":"other","hitBreakpoints":["4:70:28:1104"],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426219910,"metadata":{"connectionId":1,"message":{"seq":3693,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426219912,"metadata":{"connectionId":1,"message":{"seq":3694,"type":"event","event":"stopped","body":{"reason":"breakpoint","description":"Paused on breakpoint","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426219925,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":225}},"level":0} {"tag":"dap.send","timestamp":1588426219925,"metadata":{"connectionId":1,"message":{"seq":3695,"type":"response","request_seq":225,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426219930,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":226}},"level":0} {"tag":"dap.send","timestamp":1588426219931,"metadata":{"connectionId":1,"message":{"seq":3696,"type":"response","request_seq":226,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":691,"name":"<anonymous>","line":104,"column":12,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":30}}},"level":0} {"tag":"dap.receive","timestamp":1588426220256,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":227}},"level":0} {"tag":"cdp.send","timestamp":1588426220257,"metadata":{"connectionId":0,"message":{"id":293,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426220257,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":228}},"level":0} {"tag":"cdp.send","timestamp":1588426220257,"metadata":{"connectionId":0,"message":{"id":294,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426220257,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":229}},"level":0} {"tag":"cdp.send","timestamp":1588426220258,"metadata":{"connectionId":0,"message":{"id":295,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426220258,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":230}},"level":0} {"tag":"cdp.send","timestamp":1588426220258,"metadata":{"connectionId":0,"message":{"id":296,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426220258,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":231}},"level":0} {"tag":"cdp.send","timestamp":1588426220259,"metadata":{"connectionId":0,"message":{"id":297,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426220259,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":232}},"level":0} {"tag":"cdp.send","timestamp":1588426220260,"metadata":{"connectionId":0,"message":{"id":298,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426220262,"metadata":{"connectionId":0,"message":{"id":293,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426220263,"metadata":{"connectionId":0,"message":{"id":294,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426220263,"metadata":{"connectionId":0,"message":{"id":295,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426220263,"metadata":{"connectionId":1,"message":{"seq":3697,"type":"response","request_seq":227,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426220265,"metadata":{"connectionId":1,"message":{"seq":3698,"type":"response","request_seq":228,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426220265,"metadata":{"connectionId":0,"message":{"id":296,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426220267,"metadata":{"connectionId":1,"message":{"seq":3699,"type":"response","request_seq":229,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.send","timestamp":1588426220269,"metadata":{"connectionId":1,"message":{"seq":3700,"type":"response","request_seq":230,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426220272,"metadata":{"connectionId":0,"message":{"id":297,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426220272,"metadata":{"connectionId":0,"message":{"id":298,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426220290,"metadata":{"connectionId":1,"message":{"seq":3701,"type":"response","request_seq":231,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426220291,"metadata":{"connectionId":1,"message":{"seq":3702,"type":"response","request_seq":232,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426220375,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":233}},"level":0} {"tag":"dap.send","timestamp":1588426220375,"metadata":{"connectionId":1,"message":{"seq":3703,"type":"response","request_seq":233,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":692,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":693,"name":"attachTextEditor","line":173,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":694,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":695,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":696,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":697,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":698,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":699,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":700,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":701,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":702,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":703,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":704,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":705,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":706,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":707,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":708,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":709,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":710,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":30}}},"level":0} {"tag":"dap.receive","timestamp":1588426220747,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":691},"type":"request","seq":234}},"level":0} {"tag":"dap.send","timestamp":1588426220748,"metadata":{"connectionId":1,"message":{"seq":3704,"type":"response","request_seq":234,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local","presentationHint":"locals","expensive":false,"variablesReference":931,"line":103,"column":63,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":107,"endColumn":6},{"name":"Block: NotebookCellList","presentationHint":"locals","expensive":false,"variablesReference":932,"line":46,"column":2,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":123,"endColumn":3},{"name":"Closure (NotebookCellList)","presentationHint":"arguments","expensive":false,"variablesReference":933,"line":46,"column":2,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":123,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":934,"line":14,"column":579,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","sourceReference":1355579906},"endLine":698,"endColumn":2},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":935,"line":1,"column":1,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":700,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":936},{"name":"Global","expensive":true,"variablesReference":937}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426220783,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":931},"type":"request","seq":235}},"level":0} {"tag":"cdp.send","timestamp":1588426220784,"metadata":{"connectionId":0,"message":{"id":299,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":2215}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426220784,"metadata":{"connectionId":0,"message":{"id":300,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":2215}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426220785,"metadata":{"connectionId":0,"message":{"id":299,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426220785,"metadata":{"connectionId":0,"message":{"id":300,"result":{"result":[{"name":"e","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2372}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"editStateChanged","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426220789,"metadata":{"connectionId":1,"message":{"seq":3705,"type":"response","request_seq":235,"command":"variables","success":true,"body":{"variables":[{"name":"e","value":"{editStateChanged: true}","evaluateName":"e","type":"object","variablesReference":938},{"name":"this","value":"undefined","evaluateName":"this","type":"undefined","variablesReference":0}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426221757,"metadata":{"connectionId":1,"message":{"command":"next","arguments":{"threadId":0},"type":"request","seq":236}},"level":0} {"tag":"cdp.send","timestamp":1588426221757,"metadata":{"connectionId":0,"message":{"id":301,"method":"Debugger.stepOver","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426221758,"metadata":{"connectionId":0,"message":{"id":301,"result":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426221759,"metadata":{"connectionId":1,"message":{"seq":3706,"type":"response","request_seq":236,"command":"next","success":true,"body":{}}},"level":0} {"tag":"cdp.receive","timestamp":1588426221766,"metadata":{"connectionId":0,"message":{"method":"Debugger.resumed","params":{},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426221767,"metadata":{"connectionId":0,"message":{"method":"Debugger.paused","params":{"callFrames":[{"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1104","lineNumber":69,"columnNumber":82},"location":{"scriptId":"1104","lineNumber":73,"columnNumber":24},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2373}"},"startLocation":{"scriptId":"1104","lineNumber":69,"columnNumber":82},"endLocation":{"scriptId":"1104","lineNumber":73,"columnNumber":25}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2374}"},"name":"NotebookCellList","startLocation":{"scriptId":"1104","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1104","lineNumber":85,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2375}"},"name":"NotebookCellList","startLocation":{"scriptId":"1104","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1104","lineNumber":85,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2376}"},"startLocation":{"scriptId":"1104","lineNumber":13,"columnNumber":578},"endLocation":{"scriptId":"1104","lineNumber":697,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2377}"},"startLocation":{"scriptId":"1104","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1104","lineNumber":699,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2378}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2379}"}}],"this":{"type":"undefined"},"returnValue":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":1,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2380}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2381}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2382}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2383}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2384}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2385}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2386}"}},{"callFrameId":"{\"ordinal\":2,\"injectedScriptId\":1}","functionName":"attachTextEditor","functionLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"location":{"scriptId":"1535","lineNumber":129,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2387}"},"name":"attachTextEditor","startLocation":{"scriptId":"1535","lineNumber":102,"columnNumber":24},"endLocation":{"scriptId":"1535","lineNumber":131,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2388}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2389}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2390}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2391}"}},{"callFrameId":"{\"ordinal\":3,\"injectedScriptId\":1}","functionName":"viewUpdate","functionLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"location":{"scriptId":"1430","lineNumber":31,"columnNumber":33},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2392}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":23,"columnNumber":84},"endLocation":{"scriptId":"1430","lineNumber":80,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2393}"},"name":"viewUpdate","startLocation":{"scriptId":"1430","lineNumber":21,"columnNumber":31},"endLocation":{"scriptId":"1430","lineNumber":120,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2394}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2395}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2396}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2397}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":2398}"}},{"callFrameId":"{\"ordinal\":4,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"location":{"scriptId":"1430","lineNumber":124,"columnNumber":20},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2399}"},"startLocation":{"scriptId":"1430","lineNumber":121,"columnNumber":53},"endLocation":{"scriptId":"1430","lineNumber":126,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2400}"},"name":"StatefullMarkdownCell","startLocation":{"scriptId":"1430","lineNumber":9,"columnNumber":19},"endLocation":{"scriptId":"1430","lineNumber":154,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2401}"},"startLocation":{"scriptId":"1430","lineNumber":4,"columnNumber":462},"endLocation":{"scriptId":"1430","lineNumber":251,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2402}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2403}"}}],"this":{"type":"object","className":"StatefullMarkdownCell","description":"StatefullMarkdownCell","objectId":"{\"injectedScriptId\":1,\"id\":2404}"}},{"callFrameId":"{\"ordinal\":5,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2405}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2406}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2407}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2408}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2409}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2410}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2411}"}},{"callFrameId":"{\"ordinal\":6,\"injectedScriptId\":1}","functionName":"triggerfoldingStateChange","functionLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"location":{"scriptId":"1436","lineNumber":58,"columnNumber":39},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2412}"},"name":"triggerfoldingStateChange","startLocation":{"scriptId":"1436","lineNumber":57,"columnNumber":37},"endLocation":{"scriptId":"1436","lineNumber":59,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2413}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2414}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2415}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2416}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2417}"}},{"callFrameId":"{\"ordinal\":7,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"location":{"scriptId":"1110","lineNumber":285,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2418}"},"startLocation":{"scriptId":"1110","lineNumber":283,"columnNumber":40},"endLocation":{"scriptId":"1110","lineNumber":287,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2419}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2420}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2421}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2422}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":8,\"injectedScriptId\":1}","functionName":"updateFoldingRanges","functionLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"location":{"scriptId":"1110","lineNumber":283,"columnNumber":32},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2423}"},"name":"updateFoldingRanges","startLocation":{"scriptId":"1110","lineNumber":250,"columnNumber":31},"endLocation":{"scriptId":"1110","lineNumber":288,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2424}"},"startLocation":{"scriptId":"1110","lineNumber":13,"columnNumber":833},"endLocation":{"scriptId":"1110","lineNumber":688,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2425}"},"startLocation":{"scriptId":"1110","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1110","lineNumber":690,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2426}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2427}"}}],"this":{"type":"object","className":"NotebookViewModel","description":"NotebookViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2428}"}},{"callFrameId":"{\"ordinal\":9,\"injectedScriptId\":1}","functionName":"_updateEditorFoldingRanges","functionLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"location":{"scriptId":"816","lineNumber":61,"columnNumber":47},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2429}"},"name":"_updateEditorFoldingRanges","startLocation":{"scriptId":"816","lineNumber":57,"columnNumber":38},"endLocation":{"scriptId":"816","lineNumber":64,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2430}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2431}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2432}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2433}"}},{"callFrameId":"{\"ordinal\":10,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"location":{"scriptId":"816","lineNumber":32,"columnNumber":29},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2434}"},"startLocation":{"scriptId":"816","lineNumber":31,"columnNumber":86},"endLocation":{"scriptId":"816","lineNumber":33,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2435}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2436}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2437}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2438}"}},{"callFrameId":"{\"ordinal\":11,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2439}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2440}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2441}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2442}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2443}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2444}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2445}"}},{"callFrameId":"{\"ordinal\":12,\"injectedScriptId\":1}","functionName":"recompute","functionLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"location":{"scriptId":"1325","lineNumber":140,"columnNumber":44},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2446}"},"name":"recompute","startLocation":{"scriptId":"1325","lineNumber":55,"columnNumber":17},"endLocation":{"scriptId":"1325","lineNumber":141,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2447}"},"startLocation":{"scriptId":"1325","lineNumber":4,"columnNumber":239},"endLocation":{"scriptId":"1325","lineNumber":190,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2448}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2449}"}}],"this":{"type":"object","className":"FoldingModel","description":"FoldingModel","objectId":"{\"injectedScriptId\":1,\"id\":2450}"}},{"callFrameId":"{\"ordinal\":13,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"location":{"scriptId":"816","lineNumber":24,"columnNumber":94},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/fold/folding.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2451}"},"startLocation":{"scriptId":"816","lineNumber":21,"columnNumber":109},"endLocation":{"scriptId":"816","lineNumber":27,"columnNumber":21}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2452}"},"startLocation":{"scriptId":"816","lineNumber":4,"columnNumber":587},"endLocation":{"scriptId":"816","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2453}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2454}"}}],"this":{"type":"object","className":"FoldingController","description":"FoldingController","objectId":"{\"injectedScriptId\":1,\"id\":2455}"}},{"callFrameId":"{\"ordinal\":14,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2456}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2457}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2458}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2459}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2460}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2461}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2462}"}},{"callFrameId":"{\"ordinal\":15,\"injectedScriptId\":1}","functionName":"emit","functionLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"location":{"scriptId":"1108","lineNumber":57,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2463}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":63},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2464}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":47,"columnNumber":16},"endLocation":{"scriptId":"1108","lineNumber":60,"columnNumber":13}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2465}"},"name":"emit","startLocation":{"scriptId":"1108","lineNumber":46,"columnNumber":12},"endLocation":{"scriptId":"1108","lineNumber":61,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2466}"},"startLocation":{"scriptId":"1108","lineNumber":4,"columnNumber":64},"endLocation":{"scriptId":"1108","lineNumber":64,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2467}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2468}"}}],"this":{"type":"object","className":"NotebookEventDispatcher","description":"NotebookEventDispatcher","objectId":"{\"injectedScriptId\":1,\"id\":2469}"}},{"callFrameId":"{\"ordinal\":16,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"location":{"scriptId":"1436","lineNumber":42,"columnNumber":36},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2470}"},"startLocation":{"scriptId":"1436","lineNumber":41,"columnNumber":53},"endLocation":{"scriptId":"1436","lineNumber":43,"columnNumber":17}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2471}"},"name":"MarkdownCellViewModel","startLocation":{"scriptId":"1436","lineNumber":19,"columnNumber":23},"endLocation":{"scriptId":"1436","lineNumber":44,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2472}"},"startLocation":{"scriptId":"1436","lineNumber":13,"columnNumber":548},"endLocation":{"scriptId":"1436","lineNumber":158,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2473}"},"startLocation":{"scriptId":"1436","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"1436","lineNumber":160,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2474}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2475}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2476}"}},{"callFrameId":"{\"ordinal\":17,\"injectedScriptId\":1}","functionName":"fire","functionLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"location":{"scriptId":"438","lineNumber":456,"columnNumber":41},"url":"file:///Users/roblou/code/vscode/out/vs/base/common/event.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2477}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":452,"columnNumber":57},"endLocation":{"scriptId":"438","lineNumber":465,"columnNumber":21}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2478}"},"name":"fire","startLocation":{"scriptId":"438","lineNumber":441,"columnNumber":16},"endLocation":{"scriptId":"438","lineNumber":467,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2479}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2480}"},"startLocation":{"scriptId":"438","lineNumber":4,"columnNumber":151},"endLocation":{"scriptId":"438","lineNumber":700,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2481}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2482}"}}],"this":{"type":"object","className":"Emitter","description":"Emitter","objectId":"{\"injectedScriptId\":1,\"id\":2483}"}},{"callFrameId":"{\"ordinal\":18,\"injectedScriptId\":1}","functionName":"set editState","functionLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"location":{"scriptId":"1535","lineNumber":62,"columnNumber":35},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2484}"},"name":"set editState","startLocation":{"scriptId":"1535","lineNumber":57,"columnNumber":21},"endLocation":{"scriptId":"1535","lineNumber":66,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2485}"},"startLocation":{"scriptId":"1535","lineNumber":4,"columnNumber":273},"endLocation":{"scriptId":"1535","lineNumber":286,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2486}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2487}"}}],"this":{"type":"object","className":"MarkdownCellViewModel","description":"MarkdownCellViewModel","objectId":"{\"injectedScriptId\":1,\"id\":2488}"}},{"callFrameId":"{\"ordinal\":19,\"injectedScriptId\":1}","functionName":"editNotebookCell","functionLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"location":{"scriptId":"542","lineNumber":692,"columnNumber":31},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/notebookEditor.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2489}"},"name":"editNotebookCell","startLocation":{"scriptId":"542","lineNumber":687,"columnNumber":28},"endLocation":{"scriptId":"542","lineNumber":694,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2490}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2491}"},"startLocation":{"scriptId":"542","lineNumber":13,"columnNumber":1563},"endLocation":{"scriptId":"542","lineNumber":978,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2492}"},"startLocation":{"scriptId":"542","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"542","lineNumber":980,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2493}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2494}"}}],"this":{"type":"object","className":"NotebookEditor","description":"NotebookEditor","objectId":"{\"injectedScriptId\":1,\"id\":2495}"}},{"callFrameId":"{\"ordinal\":20,\"injectedScriptId\":1}","functionName":"run","functionLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"location":{"scriptId":"544","lineNumber":547,"columnNumber":42},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/contrib/coreActions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2496}"},"name":"run","startLocation":{"scriptId":"544","lineNumber":540,"columnNumber":11},"endLocation":{"scriptId":"544","lineNumber":548,"columnNumber":9}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2497}"},"startLocation":{"scriptId":"544","lineNumber":13,"columnNumber":719},"endLocation":{"scriptId":"544","lineNumber":1182,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2498}"},"startLocation":{"scriptId":"544","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"544","lineNumber":1184,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2499}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2500}"}}],"this":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2501}"}},{"callFrameId":"{\"ordinal\":21,\"injectedScriptId\":1}","functionName":"handler","functionLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"location":{"scriptId":"203","lineNumber":292,"columnNumber":51},"url":"file:///Users/roblou/code/vscode/out/vs/platform/actions/common/actions.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2502}"},"name":"handler","startLocation":{"scriptId":"203","lineNumber":292,"columnNumber":21},"endLocation":{"scriptId":"203","lineNumber":292,"columnNumber":73}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2503}"},"name":"registerAction2","startLocation":{"scriptId":"203","lineNumber":285,"columnNumber":28},"endLocation":{"scriptId":"203","lineNumber":317,"columnNumber":5}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2504}"},"startLocation":{"scriptId":"203","lineNumber":24,"columnNumber":353},"endLocation":{"scriptId":"203","lineNumber":319,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2505}"},"startLocation":{"scriptId":"203","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"203","lineNumber":322,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2506}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2507}"}}],"this":{"type":"undefined"}},{"callFrameId":"{\"ordinal\":22,\"injectedScriptId\":1}","functionName":"invokeFunction","functionLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"location":{"scriptId":"1036","lineNumber":42,"columnNumber":23},"url":"file:///Users/roblou/code/vscode/out/vs/platform/instantiation/common/instantiationService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2508}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":29,"columnNumber":16},"endLocation":{"scriptId":"1036","lineNumber":43,"columnNumber":13}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2509}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":36},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2510}"},"name":"invokeFunction","startLocation":{"scriptId":"1036","lineNumber":26,"columnNumber":22},"endLocation":{"scriptId":"1036","lineNumber":48,"columnNumber":9}},{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2511}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2512}"},"startLocation":{"scriptId":"1036","lineNumber":4,"columnNumber":283},"endLocation":{"scriptId":"1036","lineNumber":272,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2513}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2514}"}}],"this":{"type":"object","className":"InstantiationService","description":"InstantiationService","objectId":"{\"injectedScriptId\":1,\"id\":2515}"}},{"callFrameId":"{\"ordinal\":23,\"injectedScriptId\":1}","functionName":"_tryExecuteCommand","functionLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"location":{"scriptId":"275","lineNumber":74,"columnNumber":62},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"block","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2516}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":72,"columnNumber":20},"endLocation":{"scriptId":"275","lineNumber":77,"columnNumber":17}},{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2517}"},"name":"_tryExecuteCommand","startLocation":{"scriptId":"275","lineNumber":67,"columnNumber":30},"endLocation":{"scriptId":"275","lineNumber":81,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2518}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2519}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2520}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2521}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2522}"}},{"callFrameId":"{\"ordinal\":24,\"injectedScriptId\":1}","functionName":"","functionLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"location":{"scriptId":"275","lineNumber":64,"columnNumber":50},"url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","scopeChain":[{"type":"local","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2523}"},"startLocation":{"scriptId":"275","lineNumber":64,"columnNumber":40},"endLocation":{"scriptId":"275","lineNumber":64,"columnNumber":78}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2524}"},"name":"executeCommand","startLocation":{"scriptId":"275","lineNumber":42,"columnNumber":26},"endLocation":{"scriptId":"275","lineNumber":66,"columnNumber":13}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2525}"},"startLocation":{"scriptId":"275","lineNumber":13,"columnNumber":337},"endLocation":{"scriptId":"275","lineNumber":92,"columnNumber":1}},{"type":"closure","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2526}"},"startLocation":{"scriptId":"275","lineNumber":0,"columnNumber":10},"endLocation":{"scriptId":"275","lineNumber":94,"columnNumber":1}},{"type":"script","object":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2527}"}},{"type":"global","object":{"type":"object","className":"global","description":"global","objectId":"{\"injectedScriptId\":1,\"id\":2528}"}}],"this":{"type":"object","className":"CommandService","description":"CommandService","objectId":"{\"injectedScriptId\":1,\"id\":2529}"}}],"reason":"other","hitBreakpoints":[],"asyncStackTrace":{"description":"Promise.then","callFrames":[{"functionName":"executeCommand","scriptId":"275","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/commands/common/commandService.js","lineNumber":64,"columnNumber":35},{"functionName":"_doDispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":137,"columnNumber":41},{"functionName":"_dispatch","scriptId":"777","url":"file:///Users/roblou/code/vscode/out/vs/platform/keybinding/common/abstractKeybindingService.js","lineNumber":103,"columnNumber":24},{"functionName":"","scriptId":"269","url":"file:///Users/roblou/code/vscode/out/vs/workbench/services/keybinding/browser/keybindingService.js","lineNumber":174,"columnNumber":52}]}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426221768,"metadata":{"connectionId":1,"message":{"seq":3707,"type":"event","event":"continued","body":{"threadId":0,"allThreadsContinued":false}}},"level":0} {"tag":"dap.send","timestamp":1588426221768,"metadata":{"connectionId":1,"message":{"seq":3708,"type":"event","event":"stopped","body":{"reason":"step","description":"Paused","threadId":0,"allThreadsStopped":false}}},"level":0} {"tag":"dap.receive","timestamp":1588426221778,"metadata":{"connectionId":1,"message":{"command":"threads","type":"request","seq":237}},"level":0} {"tag":"dap.send","timestamp":1588426221778,"metadata":{"connectionId":1,"message":{"seq":3709,"type":"response","request_seq":237,"command":"threads","success":true,"body":{"threads":[{"id":0,"name":"workbench.html"}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426221781,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":0,"levels":1},"type":"request","seq":238}},"level":0} {"tag":"dap.send","timestamp":1588426221781,"metadata":{"connectionId":1,"message":{"seq":3710,"type":"response","request_seq":238,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":721,"name":"<anonymous>","line":107,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":30}}},"level":0} {"tag":"dap.receive","timestamp":1588426221814,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":239}},"level":0} {"tag":"cdp.send","timestamp":1588426221815,"metadata":{"connectionId":0,"message":{"id":302,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426221815,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":240}},"level":0} {"tag":"cdp.send","timestamp":1588426221815,"metadata":{"connectionId":0,"message":{"id":303,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426221815,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":241}},"level":0} {"tag":"cdp.send","timestamp":1588426221815,"metadata":{"connectionId":0,"message":{"id":304,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426221817,"metadata":{"connectionId":0,"message":{"id":302,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426221817,"metadata":{"connectionId":0,"message":{"id":303,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426221817,"metadata":{"connectionId":0,"message":{"id":304,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426221819,"metadata":{"connectionId":1,"message":{"seq":3711,"type":"response","request_seq":239,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426221819,"metadata":{"connectionId":1,"message":{"seq":3712,"type":"response","request_seq":240,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426221820,"metadata":{"connectionId":1,"message":{"seq":3713,"type":"response","request_seq":241,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426222189,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":721},"type":"request","seq":242}},"level":0} {"tag":"dap.send","timestamp":1588426222190,"metadata":{"connectionId":1,"message":{"seq":3714,"type":"response","request_seq":242,"command":"scopes","success":true,"body":{"scopes":[{"name":"Local","presentationHint":"locals","expensive":false,"variablesReference":939,"line":103,"column":63,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":107,"endColumn":6},{"name":"Block: NotebookCellList","presentationHint":"locals","expensive":false,"variablesReference":940,"line":46,"column":2,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":123,"endColumn":3},{"name":"Closure (NotebookCellList)","presentationHint":"arguments","expensive":false,"variablesReference":941,"line":46,"column":2,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":123,"endColumn":3},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":942,"line":14,"column":579,"source":{"name":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","path":"/Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","sourceReference":1355579906},"endLine":698,"endColumn":2},{"name":"Closure","presentationHint":"arguments","expensive":false,"variablesReference":943,"line":1,"column":1,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"endLine":700,"endColumn":2},{"name":"Script","expensive":false,"variablesReference":944},{"name":"Global","expensive":true,"variablesReference":945}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426222192,"metadata":{"connectionId":1,"message":{"command":"variables","arguments":{"variablesReference":939},"type":"request","seq":243}},"level":0} {"tag":"cdp.send","timestamp":1588426222192,"metadata":{"connectionId":0,"message":{"id":305,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":2373}","accessorPropertiesOnly":true,"ownProperties":false,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.send","timestamp":1588426222192,"metadata":{"connectionId":0,"message":{"id":306,"method":"Runtime.getProperties","params":{"objectId":"{\"injectedScriptId\":1,\"id\":2373}","ownProperties":true,"generatePreview":true},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426222193,"metadata":{"connectionId":0,"message":{"id":305,"result":{"result":[]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426222193,"metadata":{"connectionId":0,"message":{"id":306,"result":{"result":[{"name":"e","value":{"type":"object","className":"Object","description":"Object","objectId":"{\"injectedScriptId\":1,\"id\":2530}","preview":{"type":"object","description":"Object","overflow":false,"properties":[{"name":"editStateChanged","type":"boolean","value":"true"}]}},"writable":true,"configurable":true,"enumerable":true,"isOwn":true}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426222207,"metadata":{"connectionId":1,"message":{"command":"stackTrace","arguments":{"threadId":0,"startFrame":1,"levels":19},"type":"request","seq":244}},"level":0} {"tag":"dap.send","timestamp":1588426222207,"metadata":{"connectionId":1,"message":{"seq":3715,"type":"response","request_seq":244,"command":"stackTrace","success":true,"body":{"stackFrames":[{"id":722,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":723,"name":"attachTextEditor","line":173,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":724,"name":"viewUpdate","line":60,"column":15,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":725,"name":"<anonymous>","line":169,"column":5,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts","sourceReference":0},"presentationHint":"normal"},{"id":726,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":727,"name":"triggerfoldingStateChange","line":70,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":728,"name":"<anonymous>","line":413,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":729,"name":"updateFoldingRanges","line":411,"column":19,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":730,"name":"_updateEditorFoldingRanges","line":89,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":731,"name":"<anonymous>","line":54,"column":10,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":732,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":733,"name":"recompute","line":182,"column":35,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":734,"name":"<anonymous>","line":44,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts","sourceReference":0},"presentationHint":"normal"},{"id":735,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":736,"name":"emit","line":67,"column":33,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher.ts","sourceReference":0},"presentationHint":"normal"},{"id":737,"name":"<anonymous>","line":65,"column":20,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":738,"name":"fire","line":587,"column":16,"source":{"name":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","path":"/Users/roblou/code/vscode/src/vs/base/common/event.ts","sourceReference":0},"presentationHint":"normal"},{"id":739,"name":"set editState","line":61,"column":26,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"presentationHint":"normal"},{"id":740,"name":"editNotebookCell","line":868,"column":17,"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts","sourceReference":0},"presentationHint":"normal"}],"totalFrames":30}}},"level":0} {"tag":"dap.send","timestamp":1588426222749,"metadata":{"connectionId":1,"message":{"seq":3716,"type":"response","request_seq":243,"command":"variables","success":true,"body":{"variables":[{"name":"e","value":"{editStateChanged: true}","evaluateName":"e","type":"object","variablesReference":946},{"name":"this","value":"undefined","evaluateName":"this","type":"undefined","variablesReference":0},{"name":"Return value","value":"undefined","evaluateName":"Return value","type":"undefined","variablesReference":0}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426224192,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":245}},"level":0} {"tag":"cdp.send","timestamp":1588426224193,"metadata":{"connectionId":0,"message":{"id":307,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426224210,"metadata":{"connectionId":0,"message":{"id":307,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426224212,"metadata":{"connectionId":1,"message":{"seq":3717,"type":"response","request_seq":245,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426224908,"metadata":{"connectionId":1,"message":{"seq":3718,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"continue":{"operation":"continue","totalTime":2.4,"max":2.4,"avg":2.4,"stddev":null,"count":1,"failed":0},"continue.errors":[],"threads":{"operation":"threads","totalTime":0.6,"max":0.4,"avg":0.3,"stddev":0.2,"count":2,"failed":0},"threads.errors":[],"stackTrace":{"operation":"stackTrace","totalTime":7.4,"max":6.4,"avg":1.8,"stddev":3,"count":4,"failed":0},"stackTrace.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":145.1,"max":35.7,"avg":14.5,"stddev":11.8,"count":10,"failed":0},"breakpointLocations.errors":[],"scopes":{"operation":"scopes","totalTime":2.1,"max":1.5,"avg":1.1,"stddev":0.6,"count":2,"failed":0},"scopes.errors":[],"variables":{"operation":"variables","totalTime":562.5,"max":556.9,"avg":281.2,"stddev":389.8,"count":2,"failed":0},"variables.errors":[],"next":{"operation":"next","totalTime":2.9,"max":2.9,"avg":2.9,"stddev":null,"count":1,"failed":0},"next.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426224909,"metadata":{"connectionId":0,"message":{"seq":126,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.resumed":{"operation":"Debugger.resumed","totalTime":0.2,"max":0.1,"avg":0.1,"stddev":0,"count":2,"failed":0},"Debugger.resumed.errors":[],"Debugger.paused":{"operation":"Debugger.paused","totalTime":1.8,"max":0.9,"avg":0.9,"stddev":0,"count":2,"failed":0},"Debugger.paused.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426230171,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":246}},"level":0} {"tag":"cdp.send","timestamp":1588426230171,"metadata":{"connectionId":0,"message":{"id":308,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426230172,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":247}},"level":0} {"tag":"cdp.send","timestamp":1588426230172,"metadata":{"connectionId":0,"message":{"id":309,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426230172,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":248}},"level":0} {"tag":"cdp.send","timestamp":1588426230172,"metadata":{"connectionId":0,"message":{"id":310,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426230180,"metadata":{"connectionId":0,"message":{"id":308,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426230180,"metadata":{"connectionId":0,"message":{"id":309,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426230200,"metadata":{"connectionId":1,"message":{"seq":3719,"type":"response","request_seq":246,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426230202,"metadata":{"connectionId":1,"message":{"seq":3720,"type":"response","request_seq":247,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426230202,"metadata":{"connectionId":0,"message":{"id":310,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426230204,"metadata":{"connectionId":1,"message":{"seq":3721,"type":"response","request_seq":248,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426232188,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"e.selectionChanged","frameId":721,"context":"hover"},"type":"request","seq":249}},"level":0} {"tag":"cdp.send","timestamp":1588426232194,"metadata":{"connectionId":0,"message":{"id":311,"method":"Debugger.evaluateOnCallFrame","params":{"expression":"e.selectionChanged","includeCommandLineAPI":true,"objectGroup":"console","generatePreview":true,"timeout":500,"callFrameId":"{\"ordinal\":0,\"injectedScriptId\":1}"},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426232195,"metadata":{"connectionId":0,"message":{"method":"Debugger.scriptParsed","params":{"scriptId":"1635","url":"","startLine":0,"startColumn":0,"endLine":0,"endColumn":18,"executionContextId":1,"hash":"0b4f524c3943e50a551b957d0278de9e4d54b6e1","executionContextAuxData":{"isDefault":true,"type":"default","frameId":"254836B4DC9A828F1D61559A5ED12885"},"isLiveEdit":false,"sourceMapURL":"","hasSourceURL":false,"isModule":false,"length":18,"stackTrace":{"callFrames":[{"functionName":"","scriptId":"1104","url":"file:///Users/roblou/code/vscode/out/vs/workbench/contrib/notebook/browser/view/notebookCellList.js","lineNumber":73,"columnNumber":24}],"parentId":{"id":"414"}}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426232196,"metadata":{"connectionId":0,"message":{"id":311,"result":{"result":{"type":"undefined"}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"runtime.sourcecreate","timestamp":1588426232199,"message":"Creating source from url","metadata":{"inputUrl":"","absolutePath":"/Users/roblou/code/vscode"},"level":0} {"tag":"dap.send","timestamp":1588426232206,"metadata":{"connectionId":1,"message":{"seq":3722,"type":"response","request_seq":249,"command":"evaluate","success":true,"body":{"type":"undefined","result":"undefined","variablesReference":0}}},"level":0} {"tag":"dap.send","timestamp":1588426232458,"metadata":{"connectionId":1,"message":{"seq":3723,"type":"event","event":"loadedSource","body":{"reason":"new","source":{"name":"<eval>/VM633756714","path":"<eval>/VM633756714","sourceReference":633756714}}}},"level":0} {"tag":"dap.receive","timestamp":1588426233737,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":692},"type":"request","seq":250}},"level":0} {"tag":"dap.send","timestamp":1588426233737,"metadata":{"connectionId":1,"message":{"seq":3724,"type":"response","request_seq":250,"command":"scopes","success":false,"message":"Stack frame not found","body":{"error":{"id":9222,"format":"Stack frame not found","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588426234324,"metadata":{"connectionId":1,"message":{"command":"scopes","arguments":{"frameId":693},"type":"request","seq":251}},"level":0} {"tag":"dap.send","timestamp":1588426234324,"metadata":{"connectionId":1,"message":{"seq":3725,"type":"response","request_seq":251,"command":"scopes","success":false,"message":"Stack frame not found","body":{"error":{"id":9222,"format":"Stack frame not found","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588426234463,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":252}},"level":0} {"tag":"cdp.send","timestamp":1588426234464,"metadata":{"connectionId":0,"message":{"id":312,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426234465,"metadata":{"connectionId":0,"message":{"id":312,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426234480,"metadata":{"connectionId":1,"message":{"seq":3726,"type":"response","request_seq":252,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426235200,"metadata":{"connectionId":1,"message":{"seq":3727,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":110.9,"max":33,"avg":27.7,"stddev":6.9,"count":4,"failed":0},"breakpointLocations.errors":[],"evaluate":{"operation":"evaluate","totalTime":18.6,"max":18.6,"avg":18.6,"stddev":null,"count":1,"failed":0},"evaluate.errors":[],"scopes":{"operation":"scopes","totalTime":0.9,"max":0.5,"avg":0.5,"stddev":0.1,"count":2,"failed":0},"scopes.errors":[]}}}},"level":0} {"tag":"dap.send","timestamp":1588426237195,"metadata":{"connectionId":0,"message":{"seq":127,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/cdp/operation","data":{"browser":"Chrome/78.0.3904.130","errors":[],"Debugger.scriptParsed":{"operation":"Debugger.scriptParsed","totalTime":0.2,"max":0.2,"avg":0.2,"stddev":null,"count":1,"failed":0},"Debugger.scriptParsed.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426237722,"metadata":{"connectionId":1,"message":{"command":"evaluate","arguments":{"expression":"event","frameId":692,"context":"hover"},"type":"request","seq":253}},"level":0} {"tag":"dap.send","timestamp":1588426237722,"metadata":{"connectionId":1,"message":{"seq":3728,"type":"response","request_seq":253,"command":"evaluate","success":false,"message":"Stack frame not found","body":{"error":{"id":9222,"format":"Stack frame not found","showUser":false}}}},"level":0} {"tag":"dap.receive","timestamp":1588426240392,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":254}},"level":0} {"tag":"cdp.send","timestamp":1588426240392,"metadata":{"connectionId":0,"message":{"id":313,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426240393,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":255}},"level":0} {"tag":"cdp.send","timestamp":1588426240393,"metadata":{"connectionId":0,"message":{"id":314,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426240393,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":256}},"level":0} {"tag":"cdp.send","timestamp":1588426240403,"metadata":{"connectionId":0,"message":{"id":315,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426240406,"metadata":{"connectionId":0,"message":{"id":313,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426240406,"metadata":{"connectionId":0,"message":{"id":314,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426240407,"metadata":{"connectionId":1,"message":{"seq":3729,"type":"response","request_seq":254,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"cdp.receive","timestamp":1588426240407,"metadata":{"connectionId":0,"message":{"id":315,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426240407,"metadata":{"connectionId":1,"message":{"seq":3730,"type":"response","request_seq":255,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426240413,"metadata":{"connectionId":1,"message":{"seq":3731,"type":"response","request_seq":256,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.receive","timestamp":1588426241881,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts","sourceReference":0},"line":142},"type":"request","seq":257}},"level":0} {"tag":"cdp.send","timestamp":1588426241882,"metadata":{"connectionId":0,"message":{"id":316,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1535","lineNumber":103,"columnNumber":12},"end":{"scriptId":"1535","lineNumber":104,"columnNumber":16}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426241888,"metadata":{"connectionId":0,"message":{"id":316,"result":{"locations":[{"scriptId":"1535","lineNumber":103,"columnNumber":24,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426241893,"metadata":{"connectionId":1,"message":{"seq":3732,"type":"response","request_seq":257,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":142,"column":15}]}}},"level":0} {"tag":"dap.send","timestamp":1588426242724,"metadata":{"connectionId":1,"message":{"seq":3733,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"evaluate":{"operation":"evaluate","totalTime":0.3,"max":0.3,"avg":0.3,"stddev":null,"count":1,"failed":0},"evaluate.errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":62.3,"max":20.7,"avg":15.6,"stddev":3.6,"count":4,"failed":0},"breakpointLocations.errors":[]}}}},"level":0} {"tag":"dap.receive","timestamp":1588426243323,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":78},"type":"request","seq":258}},"level":0} {"tag":"cdp.send","timestamp":1588426243324,"metadata":{"connectionId":0,"message":{"id":317,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":46,"columnNumber":20},"end":{"scriptId":"1104","lineNumber":47,"columnNumber":24}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426243324,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":104},"type":"request","seq":259}},"level":0} {"tag":"cdp.send","timestamp":1588426243325,"metadata":{"connectionId":0,"message":{"id":318,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":70,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":71,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.receive","timestamp":1588426243325,"metadata":{"connectionId":1,"message":{"command":"breakpointLocations","arguments":{"source":{"name":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","path":"/Users/roblou/code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts","sourceReference":0},"line":110},"type":"request","seq":260}},"level":0} {"tag":"cdp.send","timestamp":1588426243326,"metadata":{"connectionId":0,"message":{"id":319,"method":"Debugger.getPossibleBreakpoints","params":{"restrictToFunction":false,"start":{"scriptId":"1104","lineNumber":75,"columnNumber":28},"end":{"scriptId":"1104","lineNumber":76,"columnNumber":32}},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426243327,"metadata":{"connectionId":0,"message":{"id":317,"result":{"locations":[{"scriptId":"1104","lineNumber":46,"columnNumber":36,"type":"call"}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426243328,"metadata":{"connectionId":0,"message":{"id":318,"result":{"locations":[{"scriptId":"1104","lineNumber":70,"columnNumber":34}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"cdp.receive","timestamp":1588426243328,"metadata":{"connectionId":0,"message":{"id":319,"result":{"locations":[{"scriptId":"1104","lineNumber":75,"columnNumber":28}]},"sessionId":"BEDBFE1EDD112E965831A294645D4711"}},"level":0} {"tag":"dap.send","timestamp":1588426243328,"metadata":{"connectionId":1,"message":{"seq":3734,"type":"response","request_seq":258,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":78,"column":20}]}}},"level":0} {"tag":"dap.send","timestamp":1588426243335,"metadata":{"connectionId":1,"message":{"seq":3735,"type":"response","request_seq":259,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":104,"column":12}]}}},"level":0} {"tag":"dap.send","timestamp":1588426243335,"metadata":{"connectionId":1,"message":{"seq":3736,"type":"response","request_seq":260,"command":"breakpointLocations","success":true,"body":{"breakpoints":[{"line":110,"column":6}]}}},"level":0} {"tag":"dap.send","timestamp":1588426248331,"metadata":{"connectionId":1,"message":{"seq":3737,"type":"event","event":"output","body":{"category":"telemetry","output":"js-debug/dap/operation","data":{"errors":[],"breakpointLocations":{"operation":"breakpointLocations","totalTime":31.2,"max":12.7,"avg":10.4,"stddev":3.8,"count":3,"failed":0},"breakpointLocations.errors":[]}}}},"level":0}